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:
parent
b77809ae9d
commit
3a47003578
|
|
@ -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`].
|
||||
pub fn run(
|
||||
self,
|
||||
|
|
|
|||
Loading…
Reference in New Issue