Add pull request milestone features
This commit is contained in:
@@ -344,10 +344,68 @@ impl GotchaCore {
|
||||
))
|
||||
}
|
||||
|
||||
pub async fn pull_filters(&self) -> Result<PullFilterOptions, GotchaError> {
|
||||
let server = self.server()?;
|
||||
let filter = self
|
||||
.state
|
||||
.lock()
|
||||
.unwrap()
|
||||
.preferences
|
||||
.pull_filters
|
||||
.get(&server.url)
|
||||
.cloned()
|
||||
.unwrap_or_default();
|
||||
Ok(pull_filter_options(
|
||||
&load_pull_milestones(&server).await?,
|
||||
&filter,
|
||||
))
|
||||
}
|
||||
|
||||
pub fn pull_filters_active(&self) -> Result<bool, GotchaError> {
|
||||
let server = self.server()?;
|
||||
let state = self.state.lock().unwrap();
|
||||
let filter = state
|
||||
.preferences
|
||||
.pull_filters
|
||||
.get(&server.url)
|
||||
.cloned()
|
||||
.unwrap_or_default();
|
||||
Ok(filter.is_active(&state.preferences.pull_status))
|
||||
}
|
||||
|
||||
pub fn set_pull_filters(&self, milestone: String) -> Result<(), GotchaError> {
|
||||
let filter = PullFilter { milestone };
|
||||
let mut state = self.state.lock().unwrap();
|
||||
let server = state
|
||||
.active_server
|
||||
.and_then(|index| state.preferences.servers.get(index))
|
||||
.ok_or("Select a server first.")?;
|
||||
let key = server.url.clone();
|
||||
if filter == PullFilter::default() {
|
||||
state.preferences.pull_filters.remove(&key);
|
||||
} else {
|
||||
state.preferences.pull_filters.insert(key, filter);
|
||||
}
|
||||
save_preferences(&state.preferences).map_err(Into::into)
|
||||
}
|
||||
|
||||
pub async fn pulls(&self) -> Result<Vec<PullRow>, GotchaError> {
|
||||
let server = self.server()?;
|
||||
let status = self.state.lock().unwrap().preferences.pull_status.clone();
|
||||
Ok(pull_rows(&load_pulls(&server, &status).await?))
|
||||
let (status, filter) = {
|
||||
let state = self.state.lock().unwrap();
|
||||
(
|
||||
state.preferences.pull_status.clone(),
|
||||
state
|
||||
.preferences
|
||||
.pull_filters
|
||||
.get(&server.url)
|
||||
.cloned()
|
||||
.unwrap_or_default(),
|
||||
)
|
||||
};
|
||||
Ok(pull_rows(
|
||||
&load_pulls(&server, &status, &filter.milestone).await?,
|
||||
))
|
||||
}
|
||||
|
||||
pub async fn pull(
|
||||
|
||||
Reference in New Issue
Block a user