Add milestone creation and editing
This commit is contained in:
@@ -139,6 +139,13 @@ pub struct MilestoneListPage {
|
||||
pub has_more: bool,
|
||||
}
|
||||
|
||||
#[derive(Clone, uniffi::Record)]
|
||||
pub struct MilestoneEditorPage {
|
||||
pub title: String,
|
||||
pub description: String,
|
||||
pub due_date: Option<i64>,
|
||||
}
|
||||
|
||||
#[derive(Clone, uniffi::Record)]
|
||||
pub struct PullFilterOptions {
|
||||
pub milestones: Vec<String>,
|
||||
@@ -364,6 +371,23 @@ pub fn milestone_page(details: MilestoneDetails) -> MilestonePage {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn milestone_editor_page(milestone: Option<models::Milestone>) -> MilestoneEditorPage {
|
||||
MilestoneEditorPage {
|
||||
title: milestone
|
||||
.as_ref()
|
||||
.and_then(|milestone| milestone.title.clone())
|
||||
.unwrap_or_default(),
|
||||
description: milestone
|
||||
.as_ref()
|
||||
.and_then(|milestone| milestone.description.clone())
|
||||
.unwrap_or_default(),
|
||||
due_date: milestone
|
||||
.as_ref()
|
||||
.and_then(|milestone| milestone.due_on.as_deref())
|
||||
.and_then(parse_api_date),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn pull_filter_options(milestones: &[String], filter: &PullFilter) -> PullFilterOptions {
|
||||
let mut milestones = milestones.to_vec();
|
||||
if !filter.milestone.is_empty() {
|
||||
@@ -1425,6 +1449,21 @@ mod tests {
|
||||
assert_eq!(page.pulls[0].number, 7);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn milestone_editor_preserves_description_and_optional_due_date() {
|
||||
let page = milestone_editor_page(Some(models::Milestone {
|
||||
title: Some("Version 1".into()),
|
||||
description: Some("Ship it".into()),
|
||||
due_on: Some("2024-02-29T12:34:56Z".into()),
|
||||
..Default::default()
|
||||
}));
|
||||
assert_eq!(page.title, "Version 1");
|
||||
assert_eq!(page.description, "Ship it");
|
||||
assert_eq!(page.due_date, Some(1_709_164_800));
|
||||
|
||||
assert_eq!(milestone_editor_page(None).due_date, None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn classifies_repository_files_in_rust() {
|
||||
let markdown = repository_file_page("docs/README.md", b"# Hello".to_vec());
|
||||
|
||||
Reference in New Issue
Block a user