Expose stackBranches on VirtualBranchReference in the UI

To be used for rendering the updated design that shows the top-of-stack branch
This commit is contained in:
Kiril Videlov 2024-11-05 14:08:52 +01:00
parent d763258bc8
commit 0ebb6f6036
2 changed files with 19 additions and 4 deletions

View File

@ -328,6 +328,11 @@ export class VirtualBranchReference {
id!: string; id!: string;
/** Determines if the virtual branch is applied in the workspace */ /** Determines if the virtual branch is applied in the workspace */
inWorkspace!: boolean; inWorkspace!: boolean;
/**
List of branch names that are part of the stack
Ordered from newest to oldest (the most recent branch is first in the list)
*/
stackBranches!: string[];
} }
/** Represents a "commit author" or "signature", based on the data from ther git history */ /** Represents a "commit author" or "signature", based on the data from ther git history */

View File

@ -16,6 +16,7 @@ use gitbutler_stack::{Stack as GitButlerBranch, StackId, Target};
use gix::object::tree::diff::Action; use gix::object::tree::diff::Action;
use gix::prelude::{ObjectIdExt, TreeDiffChangeExt}; use gix::prelude::{ObjectIdExt, TreeDiffChangeExt};
use gix::reference::Category; use gix::reference::Category;
use itertools::Itertools;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use std::borrow::Cow; use std::borrow::Cow;
use std::collections::BTreeSet; use std::collections::BTreeSet;
@ -241,10 +242,16 @@ fn branch_group_to_branch(
} }
// Virtual branch associated with this branch // Virtual branch associated with this branch
let virtual_branch_reference = virtual_branch.map(|branch| VirtualBranchReference { let virtual_branch_reference = virtual_branch.map(|stack| VirtualBranchReference {
given_name: branch.name.clone(), given_name: stack.name.clone(),
id: branch.id, id: stack.id,
in_workspace: branch.in_workspace, in_workspace: stack.in_workspace,
stack_branches: stack
.branches()
.iter()
.rev()
.map(|b| b.name.clone())
.collect_vec(),
}); });
let mut remotes: Vec<gix::remote::Name<'static>> = Vec::new(); let mut remotes: Vec<gix::remote::Name<'static>> = Vec::new();
@ -448,6 +455,9 @@ pub struct VirtualBranchReference {
pub id: StackId, pub id: StackId,
/// Determines if the virtual branch is applied in the workspace /// Determines if the virtual branch is applied in the workspace
pub in_workspace: bool, pub in_workspace: bool,
/// List of branches that are part of the stack
/// Ordered from newest to oldest (the most recent branch is first in the list)
pub stack_branches: Vec<String>,
} }
/// Takes a list of `branch_names` (the given name, as returned by `BranchListing`) and returns /// Takes a list of `branch_names` (the given name, as returned by `BranchListing`) and returns