diff --git a/crates/radicle-types/src/cobs/issue.rs b/crates/radicle-types/src/cobs/issue.rs index b9c6cdc9b..f6296c5e0 100644 --- a/crates/radicle-types/src/cobs/issue.rs +++ b/crates/radicle-types/src/cobs/issue.rs @@ -230,7 +230,9 @@ impl FromRadicleAction for Action { radicle::issue::Action::Lifecycle { state } => Self::Lifecycle { state: state.into(), }, - radicle::issue::Action::Edit { title } => Self::Edit { title }, + radicle::issue::Action::Edit { title } => Self::Edit { + title: title.to_string(), + }, } } } diff --git a/crates/radicle-types/src/domain/patch/models/patch.rs b/crates/radicle-types/src/domain/patch/models/patch.rs index bb8676ff6..2e79ffcce 100644 --- a/crates/radicle-types/src/domain/patch/models/patch.rs +++ b/crates/radicle-types/src/domain/patch/models/patch.rs @@ -578,7 +578,10 @@ impl FromRadicleAction for Action { .map(|a| Author::new(a, aliases)) .collect::>(), }, - radicle::patch::Action::Edit { title, target } => Self::Edit { title, target }, + radicle::patch::Action::Edit { title, target } => Self::Edit { + title: title.to_string(), + target, + }, radicle::patch::Action::Label { labels } => Self::Label { labels }, radicle::patch::Action::Lifecycle { state } => Self::Lifecycle { state }, radicle::patch::Action::Merge { revision, commit } => Self::Merge { revision, commit }, diff --git a/crates/radicle-types/src/error.rs b/crates/radicle-types/src/error.rs index 614e98397..5847c0c7a 100644 --- a/crates/radicle-types/src/error.rs +++ b/crates/radicle-types/src/error.rs @@ -152,6 +152,10 @@ pub enum Error { #[error(transparent)] Issue(#[from] radicle::issue::Error), + /// Invalid title. + #[error(transparent)] + Title(#[from] radicle::cob::TitleError), + /// Node error. #[error(transparent)] Node(#[from] radicle::node::Error), diff --git a/crates/radicle-types/src/traits/issue.rs b/crates/radicle-types/src/traits/issue.rs index 2884dd267..81ea8f68f 100644 --- a/crates/radicle-types/src/traits/issue.rs +++ b/crates/radicle-types/src/traits/issue.rs @@ -1,5 +1,6 @@ use std::collections::BTreeSet; +use radicle::cob::Title; use radicle::issue::cache::Issues as _; use radicle::node::Handle; use radicle::storage::ReadStorage; @@ -106,8 +107,9 @@ pub trait IssuesMut: Profile { let signer = profile.signer()?; let aliases = profile.aliases(); let mut issues = profile.issues_mut(&repo)?; + let title = Title::try_from(new.title)?; let issue = issues.create( - new.title, + title, new.description, &new.labels, &new.assignees, @@ -183,7 +185,7 @@ pub trait IssuesMut: Profile { )?; } cobs::issue::Action::Edit { title } => { - issue.edit(title, &signer)?; + issue.edit(Title::try_from(title)?, &signer)?; } } diff --git a/crates/radicle-types/src/traits/patch.rs b/crates/radicle-types/src/traits/patch.rs index 0713713af..ce3cf2014 100644 --- a/crates/radicle-types/src/traits/patch.rs +++ b/crates/radicle-types/src/traits/patch.rs @@ -1,5 +1,6 @@ use std::collections::BTreeSet; +use radicle::cob::Title; use radicle::node::device::BoxedSigner; use radicle::node::Handle; use radicle::patch::cache::Patches as _; @@ -140,7 +141,7 @@ pub trait PatchesMut: Profile { patch.unresolve_review_comment(review, comment, &signer)?; } models::patch::Action::Edit { title, target } => { - patch.edit::(title, target, &signer)?; + patch.edit::(Title::try_from(title)?, target, &signer)?; } models::patch::Action::ReviewEdit { review,