mirror of
https://seed.radicle.dev/rad:z39mP9rQAaGmERfUMPULfPUi473tY.git
synced 2026-11-13 23:10:50 +08:00
Implement patch browser context on home page
This commit is contained in:
+2
-2
@@ -130,7 +130,7 @@ impl HomeView {
|
||||
let state = app.state(&Cid::Home(HomeCid::IssueBrowser))?;
|
||||
let progress = match state {
|
||||
State::Tup2((StateValue::Usize(step), StateValue::Usize(total))) => {
|
||||
Progress::Step(step, total)
|
||||
Progress::Step(step.saturating_add(1), total)
|
||||
}
|
||||
_ => Progress::None,
|
||||
};
|
||||
@@ -141,7 +141,7 @@ impl HomeView {
|
||||
let state = app.state(&Cid::Home(HomeCid::PatchBrowser))?;
|
||||
let progress = match state {
|
||||
State::Tup2((StateValue::Usize(step), StateValue::Usize(total))) => {
|
||||
Progress::Step(step, total)
|
||||
Progress::Step(step.saturating_add(1), total)
|
||||
}
|
||||
_ => Progress::None,
|
||||
};
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
use radicle::cob::issue::{Issue, IssueId};
|
||||
use radicle::cob::patch::{Patch, PatchId};
|
||||
use radicle::prelude::{Id, Project};
|
||||
use radicle::Profile;
|
||||
|
||||
@@ -10,12 +11,14 @@ pub struct Context {
|
||||
project: Project,
|
||||
repository: Repository,
|
||||
issues: Vec<(IssueId, Issue)>,
|
||||
patches: Vec<(PatchId, Patch)>,
|
||||
}
|
||||
|
||||
impl Context {
|
||||
pub fn new(profile: Profile, id: Id, project: Project) -> Self {
|
||||
let repository = profile.storage.repository(id).unwrap();
|
||||
let issues = crate::cob::issue::all(&repository).unwrap_or_default();
|
||||
let patches = crate::cob::patch::all(&repository).unwrap_or_default();
|
||||
|
||||
Self {
|
||||
id,
|
||||
@@ -23,6 +26,7 @@ impl Context {
|
||||
project,
|
||||
repository,
|
||||
issues,
|
||||
patches,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,4 +49,8 @@ impl Context {
|
||||
pub fn issues(&self) -> &Vec<(IssueId, Issue)> {
|
||||
&self.issues
|
||||
}
|
||||
|
||||
pub fn patches(&self) -> &Vec<(PatchId, Patch)> {
|
||||
&self.patches
|
||||
}
|
||||
}
|
||||
|
||||
+29
-6
@@ -116,10 +116,33 @@ pub fn context(context: &Context, theme: &Theme, patch: (PatchId, Patch)) -> Wid
|
||||
common::context::bar(theme, "Patch", &id, title, &author, &comments.to_string())
|
||||
}
|
||||
|
||||
pub fn browse_context(
|
||||
_context: &Context,
|
||||
theme: &Theme,
|
||||
_progress: Progress,
|
||||
) -> Widget<ContextBar> {
|
||||
common::context::bar(theme, "Browse", "", "", "", "")
|
||||
pub fn browse_context(context: &Context, theme: &Theme, progress: Progress) -> Widget<ContextBar> {
|
||||
use radicle::cob::patch::State;
|
||||
|
||||
let patches = context.patches();
|
||||
let mut draft = 0;
|
||||
let mut open = 0;
|
||||
let mut archived = 0;
|
||||
let mut merged = 0;
|
||||
|
||||
for (_, patch) in patches {
|
||||
match patch.state() {
|
||||
State::Draft => draft += 1,
|
||||
State::Open { conflicts: _ } => open += 1,
|
||||
State::Archived => archived += 1,
|
||||
State::Merged {
|
||||
commit: _,
|
||||
revision: _,
|
||||
} => merged += 1,
|
||||
}
|
||||
}
|
||||
|
||||
common::context::bar(
|
||||
theme,
|
||||
"Browse",
|
||||
"",
|
||||
"",
|
||||
&format!("{draft} draft | {open} open | {archived} archived | {merged} merged"),
|
||||
&progress.to_string(),
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user