radicle: add ReviewEdit getter methods

Downstream clients require access to the data for a `ReviewEdit` – for example,
the desktop client builds a representation of `Action`s for TypeScript
generation.

To allow these kinds of use cases, methods are added to `ReviewEdit` to allow
access to its underlying data.
This commit is contained in:
Fintan Halpenny 2025-07-15 09:53:50 +01:00
parent b77809ae9d
commit 3a47003578
1 changed files with 38 additions and 0 deletions

View File

@ -59,6 +59,44 @@ impl ReviewEdit {
} }
} }
/// Get the summary of the [`ReviewEdit`].
///
/// The summary was optional in the first version, so it may be `None`.
pub fn summary(&self) -> Option<&String> {
match self {
ReviewEdit::V1(ReviewEditV1 { summary, .. }) => summary.as_ref(),
ReviewEdit::V2(ReviewEditV2 { summary, .. }) => Some(summary),
}
}
/// Get the [`Verdict`] of the [`ReviewEdit`].
pub fn verdict(&self) -> Option<&Verdict> {
match self {
ReviewEdit::V1(ReviewEditV1 { verdict, .. }) => verdict.as_ref(),
ReviewEdit::V2(ReviewEditV2 { verdict, .. }) => verdict.as_ref(),
}
}
/// Get the list of [`Label`]s of the [`ReviewEdit`].
pub fn labels(&self) -> &[Label] {
match self {
ReviewEdit::V1(ReviewEditV1 { labels, .. }) => labels,
ReviewEdit::V2(ReviewEditV2 { labels, .. }) => labels,
}
}
/// Get the [`Embed`]s of the [`ReviewEdit`].
///
/// [`Embed`]s were introduced in the second version of edits. For this
/// reason, an [`Option`] is returned instead of a [`Vec`] this allows to
/// avoid an unnecessary clone of the [`Vec`] when it is present.
pub fn embeds(&self) -> Option<&Vec<Embed<Uri>>> {
match self {
ReviewEdit::V1(_) => None,
ReviewEdit::V2(ReviewEditV2 { embeds, .. }) => Some(embeds),
}
}
/// Apply the action to the given [`Patch`]. /// Apply the action to the given [`Patch`].
pub fn run( pub fn run(
self, self,