Skip to content

Commit a6bf299

Browse files
committed
fix: always show safe mode badge including silent level
Remove conditional rendering of safe mode badge. The silent level should be displayed alongside other safe mode levels to ensure consistent UI and make the safe mode state always visible to users, even when set to silent.
1 parent 9dc6597 commit a6bf299

3 files changed

Lines changed: 30 additions & 35 deletions

File tree

TablePro/Models/Connection/ConnectionToolbarState.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -213,9 +213,7 @@ final class ConnectionToolbarState {
213213
parts.append(String(localized: "Replication lag: \(lag)s"))
214214
}
215215

216-
if safeModeLevel != .silent {
217-
parts.append(safeModeLevel.displayName)
218-
}
216+
parts.append(safeModeLevel.displayName)
219217

220218
return parts.joined(separator: "")
221219
}

TablePro/Views/Toolbar/ConnectionStatusView.swift

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,11 @@ struct ConnectionStatusView: View {
7373
.font(.system(size: 13))
7474
.foregroundStyle(ThemeEngine.shared.colors.toolbar.secondaryTextSwiftUI)
7575
.overlay(alignment: .bottomTrailing) {
76-
if safeModeLevel != .silent {
77-
Image(systemName: safeModeLevel.iconName)
78-
.font(.system(size: 7, weight: .bold))
79-
.foregroundStyle(safeModeLevel.badgeColor)
80-
.offset(x: 3, y: 2)
81-
.help(safeModeLevel.displayName)
82-
}
76+
Image(systemName: safeModeLevel.iconName)
77+
.font(.system(size: 7, weight: .bold))
78+
.foregroundStyle(safeModeLevel.badgeColor)
79+
.offset(x: 3, y: 2)
80+
.help(safeModeLevel.displayName)
8381
}
8482

8583
Text(databaseName)

TablePro/Views/Toolbar/SafeModeBadgeView.swift

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,36 +10,34 @@ struct SafeModeBadgeView: View {
1010
@State private var showPopover = false
1111

1212
var body: some View {
13-
if safeModeLevel != .silent {
14-
Button {
15-
showPopover.toggle()
16-
} label: {
17-
HStack(spacing: 4) {
18-
Image(systemName: safeModeLevel.iconName)
19-
.font(.system(size: 12, weight: .medium))
20-
.foregroundStyle(safeModeLevel.badgeColor)
21-
}
13+
Button {
14+
showPopover.toggle()
15+
} label: {
16+
HStack(spacing: 4) {
17+
Image(systemName: safeModeLevel.iconName)
18+
.font(.system(size: 12, weight: .medium))
19+
.foregroundStyle(safeModeLevel.badgeColor)
2220
}
23-
.buttonStyle(.plain)
24-
.help(String(localized: "Safe Mode: \(safeModeLevel.displayName)"))
25-
.popover(isPresented: $showPopover) {
26-
VStack(alignment: .leading, spacing: 8) {
27-
Text("Safe Mode")
28-
.font(.headline)
29-
.padding(.bottom, 4)
21+
}
22+
.buttonStyle(.plain)
23+
.help(String(localized: "Safe Mode: \(safeModeLevel.displayName)"))
24+
.popover(isPresented: $showPopover) {
25+
VStack(alignment: .leading, spacing: 8) {
26+
Text("Safe Mode")
27+
.font(.headline)
28+
.padding(.bottom, 4)
3029

31-
Picker("", selection: $safeModeLevel) {
32-
ForEach(SafeModeLevel.allCases) { level in
33-
Label(level.displayName, systemImage: level.iconName)
34-
.tag(level)
35-
}
30+
Picker("", selection: $safeModeLevel) {
31+
ForEach(SafeModeLevel.allCases) { level in
32+
Label(level.displayName, systemImage: level.iconName)
33+
.tag(level)
3634
}
37-
.pickerStyle(.radioGroup)
38-
.labelsHidden()
3935
}
40-
.padding()
41-
.frame(width: 200)
36+
.pickerStyle(.radioGroup)
37+
.labelsHidden()
4238
}
39+
.padding()
40+
.frame(width: 200)
4341
}
4442
}
4543
}
@@ -48,6 +46,7 @@ struct SafeModeBadgeView: View {
4846

4947
#Preview("Safe Mode Badges") {
5048
VStack(spacing: 12) {
49+
SafeModeBadgeView(safeModeLevel: .constant(.silent))
5150
SafeModeBadgeView(safeModeLevel: .constant(.alert))
5251
SafeModeBadgeView(safeModeLevel: .constant(.safeMode))
5352
SafeModeBadgeView(safeModeLevel: .constant(.readOnly))

0 commit comments

Comments
 (0)