Skip to content

Commit 6a050e6

Browse files
committed
Restore sidebar grouping with sidebar tabs
1 parent b695683 commit 6a050e6

1 file changed

Lines changed: 15 additions & 30 deletions

File tree

macos/Sources/Features/Worktrunk/WorktrunkSidebarView.swift

Lines changed: 15 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,14 @@ struct WorktrunkSidebarView: View {
5959

6060
Spacer(minLength: 0)
6161

62-
if !sidebarTabsEnabled {
63-
Button {
64-
toggleSidebarListMode()
65-
} label: {
66-
Image(systemName: store.sidebarListMode == .flatWorktrees ? "list.bullet.indent" : "list.bullet")
67-
.foregroundStyle(.secondary)
68-
}
69-
.buttonStyle(.plain)
70-
.help(store.sidebarListMode == .flatWorktrees ? "Switch to nested list" : "Switch to flat list")
62+
Button {
63+
toggleSidebarListMode()
64+
} label: {
65+
Image(systemName: store.sidebarListMode == .flatWorktrees ? "list.bullet.indent" : "list.bullet")
66+
.foregroundStyle(.secondary)
7167
}
68+
.buttonStyle(.plain)
69+
.help(store.sidebarListMode == .flatWorktrees ? "Switch to nested list" : "Switch to flat list")
7270

7371
Menu {
7472
ForEach(WorktreeSortOrder.allCases, id: \.self) { order in
@@ -187,15 +185,7 @@ struct WorktrunkSidebarView: View {
187185
.onChange(of: store.sidebarListMode) { _ in
188186
clearSelectionIfMainInFlatMode()
189187
}
190-
.onChange(of: sidebarTabsEnabled) { enabled in
191-
if enabled {
192-
forceFlatModeIfNeeded()
193-
}
194-
}
195188
.onAppear {
196-
if sidebarTabsEnabled {
197-
forceFlatModeIfNeeded()
198-
}
199189
if store.sidebarListMode == .nestedByRepo, sidebarState.expandedRepoIDs.isEmpty {
200190
sidebarState.applyExpandedRepoIDs(
201191
Set(store.sidebarSnapshot.repositories.map(\.id)),
@@ -297,7 +287,7 @@ struct WorktrunkSidebarView: View {
297287
if store.sidebarListMode == .flatWorktrees {
298288
flatWorktreeList(snapshot: snapshot, excludingWorktreePaths: topWorktreePaths)
299289
} else {
300-
nestedRepoList(snapshot: snapshot)
290+
nestedRepoList(snapshot: snapshot, excludingWorktreePaths: topWorktreePaths)
301291
}
302292
}
303293
.background(SidebarListScrollFinder(preserver: sidebarScrollPreserver))
@@ -321,16 +311,6 @@ struct WorktrunkSidebarView: View {
321311
return nil
322312
}
323313

324-
private func forceFlatModeIfNeeded() {
325-
if store.sidebarListMode != .flatWorktrees {
326-
store.sidebarListMode = .flatWorktrees
327-
}
328-
if store.worktreeSortOrder != .recentActivity {
329-
store.worktreeSortOrder = .recentActivity
330-
}
331-
clearSelectionIfMainInFlatMode()
332-
}
333-
334314
@ViewBuilder
335315
private func sidebarTabsList(
336316
snapshot: WorktrunkStore.SidebarSnapshot,
@@ -419,7 +399,10 @@ struct WorktrunkSidebarView: View {
419399
}
420400

421401
@ViewBuilder
422-
private func nestedRepoList(snapshot: WorktrunkStore.SidebarSnapshot) -> some View {
402+
private func nestedRepoList(
403+
snapshot: WorktrunkStore.SidebarSnapshot,
404+
excludingWorktreePaths: Set<String>
405+
) -> some View {
423406
ForEach(snapshot.repositories) { repo in
424407
DisclosureGroup(
425408
isExpanded: Binding(
@@ -449,7 +432,9 @@ struct WorktrunkSidebarView: View {
449432
}
450433
.help("Create worktree")
451434

452-
let worktrees = snapshot.worktreesByRepositoryID[repo.id] ?? []
435+
let worktrees = (snapshot.worktreesByRepositoryID[repo.id] ?? []).filter { wt in
436+
!excludingWorktreePaths.contains(standardizedPath(wt.path))
437+
}
453438
if worktrees.isEmpty {
454439
Text("No worktrees")
455440
.foregroundStyle(.secondary)

0 commit comments

Comments
 (0)