Add pull request milestone features

This commit is contained in:
Georg Bauer
2026-07-31 14:22:21 +02:00
parent c5ecb8f87d
commit 86200b4668
9 changed files with 474 additions and 52 deletions

View File

@@ -55,6 +55,8 @@ pub struct Preferences {
#[serde(default = "open_status")]
pub pull_status: String,
#[serde(default)]
pub pull_filters: BTreeMap<String, PullFilter>,
#[serde(default)]
pub appearance: AppearanceMode,
}
@@ -67,6 +69,7 @@ impl Default for Preferences {
issue_status: open_status(),
issue_filters: BTreeMap::new(),
pull_status: open_status(),
pull_filters: BTreeMap::new(),
appearance: AppearanceMode::default(),
}
}
@@ -86,6 +89,18 @@ impl IssueFilter {
}
}
#[derive(Clone, Default, Deserialize, Eq, PartialEq, Serialize)]
pub struct PullFilter {
#[serde(default)]
pub milestone: String,
}
impl PullFilter {
pub fn is_active(&self, status: &str) -> bool {
status != "open" || self != &Self::default()
}
}
#[derive(Clone)]
pub struct RepositoryData {
pub owner: String,
@@ -127,6 +142,7 @@ pub struct IssueDetails {
pub struct MilestoneDetails {
pub milestone: models::Milestone,
pub issues: Vec<models::Issue>,
pub pulls: Vec<models::Issue>,
}
pub struct PullDetails {
@@ -154,5 +170,13 @@ mod tests {
}
.is_active("open")
);
assert!(!PullFilter::default().is_active("open"));
assert!(PullFilter::default().is_active("closed"));
assert!(
PullFilter {
milestone: "v1".into(),
}
.is_active("open")
);
}
}