diff --git a/CodeEditModules/Modules/StatusBar/src/Model/StatusBarModel.swift b/CodeEditModules/Modules/StatusBar/src/Model/StatusBarModel.swift index 841ec413bd..bfe189fa6c 100644 --- a/CodeEditModules/Modules/StatusBar/src/Model/StatusBarModel.swift +++ b/CodeEditModules/Modules/StatusBar/src/Model/StatusBarModel.swift @@ -22,7 +22,7 @@ public class StatusBarModel: ObservableObject { @Published public var warningCount: Int = 0 // Implementation missing /// The selected branch from the GitClient - @Published public var selectedBranch: String = "" + @Published public var selectedBranch: String? /// State of pulling from git @Published public var isReloading: Bool = false // Implementation missing @@ -63,6 +63,10 @@ public class StatusBarModel: ObservableObject { /// - Parameter gitClient: a GitClient public init(gitClient: GitClient) { self.gitClient = gitClient - self.selectedBranch = gitClient.getCurrentBranchName() + if gitClient.getCurrentBranchName().contains("fatal: not a git repository") { + self.selectedBranch = nil + } else { + self.selectedBranch = gitClient.getCurrentBranchName() + } } } diff --git a/CodeEditModules/Modules/StatusBar/src/StatusBar.swift b/CodeEditModules/Modules/StatusBar/src/StatusBar.swift index dce0ea6804..cd81d9ee9c 100644 --- a/CodeEditModules/Modules/StatusBar/src/StatusBar.swift +++ b/CodeEditModules/Modules/StatusBar/src/StatusBar.swift @@ -47,8 +47,10 @@ public struct StatusBarView: View { StatusBarLabelButton(model: model, title: model.errorCount.formatted(), image: "xmark.octagon") StatusBarLabelButton(model: model, title: model.warningCount.formatted(), image: "exclamationmark.triangle") } - StatusBarBranchPicker(model: model) - StatusBarPullButton(model: model) + if model.selectedBranch != nil { + StatusBarBranchPicker(model: model) + StatusBarPullButton(model: model) + } Spacer() StatusBarCursorLocationLabel(model: model) StatusBarIndentSelector(model: model) diff --git a/CodeEditModules/Modules/StatusBar/src/StatusBarItems/StatusBarBranchPicker.swift b/CodeEditModules/Modules/StatusBar/src/StatusBarItems/StatusBarBranchPicker.swift index fcf9a30f87..dc1f55c891 100644 --- a/CodeEditModules/Modules/StatusBar/src/StatusBarItems/StatusBarBranchPicker.swift +++ b/CodeEditModules/Modules/StatusBar/src/StatusBarItems/StatusBarBranchPicker.swift @@ -18,6 +18,7 @@ internal struct StatusBarBranchPicker: View { internal var body: some View { Menu { + ForEach(model.gitClient.getBranches(), id: \.self) { branch in Button { do { @@ -41,11 +42,12 @@ internal struct StatusBarBranchPicker: View { } } } label: { - Text(model.selectedBranch) + Text(model.selectedBranch ?? "No Git Repository") .font(model.toolbarFont) } .menuStyle(.borderlessButton) .fixedSize() .onHover { isHovering($0) } + .disabled(model.selectedBranch == nil) } } diff --git a/CodeEditModules/Modules/StatusBar/src/StatusBarItems/StatusBarPullButton.swift b/CodeEditModules/Modules/StatusBar/src/StatusBarItems/StatusBarPullButton.swift index 0ddadcf730..9fa5f37ce7 100644 --- a/CodeEditModules/Modules/StatusBar/src/StatusBarItems/StatusBarPullButton.swift +++ b/CodeEditModules/Modules/StatusBar/src/StatusBarItems/StatusBarPullButton.swift @@ -39,9 +39,10 @@ internal struct StatusBarPullButton: View { } } - .buttonStyle(.borderless) + .buttonStyle(.plain) .foregroundStyle(.primary) .onHover { isHovering($0) } + .disabled(model.selectedBranch == nil) } // Temporary