Skip to content

Commit 85b1a59

Browse files
committed
Fix editor sheets: wrong title on edit, missing padding
Both Snippet and Replacement editors used @State to check if the entry name/trigger was empty to decide the title. Since @State captures the initial value, editing an existing entry could still show "Add" if SwiftUI reused the view. Pass an explicit isEditing flag instead. Also move padding inside the editor body and remove the conflicting outer .padding(20) on the sheet content. Made-with: Cursor
1 parent b43614c commit 85b1a59

2 files changed

Lines changed: 8 additions & 7 deletions

File tree

voxtral_realtime/macos/VoxtralRealtime/Views/ReplacementManagementView.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ struct ReplacementManagementView: View {
8080
}
8181
}
8282
.sheet(isPresented: $isPresentingEditor) {
83-
ReplacementEntryEditor(entry: editingEntry) { entry in
83+
ReplacementEntryEditor(entry: editingEntry, isEditing: editingEntryID != nil) { entry in
8484
if editingEntryID == nil {
8585
replacementStore.add(entry)
8686
} else {
@@ -90,7 +90,6 @@ struct ReplacementManagementView: View {
9090
} onCancel: {
9191
isPresentingEditor = false
9292
}
93-
.padding(20)
9493
.frame(width: 420)
9594
}
9695
}
@@ -118,12 +117,13 @@ struct ReplacementManagementView: View {
118117

119118
private struct ReplacementEntryEditor: View {
120119
@State var entry: ReplacementEntry
120+
let isEditing: Bool
121121
let onSave: (ReplacementEntry) -> Void
122122
let onCancel: () -> Void
123123

124124
var body: some View {
125125
VStack(alignment: .leading, spacing: 16) {
126-
Text(entry.trigger.isEmpty ? "Add Replacement" : "Edit Replacement")
126+
Text(isEditing ? "Edit Replacement" : "Add Replacement")
127127
.font(.headline)
128128

129129
TextField("Trigger phrase", text: $entry.trigger)
@@ -149,5 +149,6 @@ private struct ReplacementEntryEditor: View {
149149
.disabled(entry.trigger.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty || entry.replacement.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty)
150150
}
151151
}
152+
.padding(24)
152153
}
153154
}

voxtral_realtime/macos/VoxtralRealtime/Views/SnippetManagementView.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ struct SnippetManagementView: View {
9191
}
9292
}
9393
.sheet(isPresented: $isPresentingEditor) {
94-
SnippetEditor(snippet: editingSnippet) { snippet in
94+
SnippetEditor(snippet: editingSnippet, isEditing: editingSnippetID != nil) { snippet in
9595
if editingSnippetID == nil {
9696
snippetStore.add(snippet)
9797
} else {
@@ -101,8 +101,7 @@ struct SnippetManagementView: View {
101101
} onCancel: {
102102
isPresentingEditor = false
103103
}
104-
.padding(20)
105-
.frame(width: 480, height: 420)
104+
.frame(width: 480, height: 460)
106105
}
107106
}
108107

@@ -130,12 +129,13 @@ struct SnippetManagementView: View {
130129

131130
private struct SnippetEditor: View {
132131
@State var snippet: Snippet
132+
let isEditing: Bool
133133
let onSave: (Snippet) -> Void
134134
let onCancel: () -> Void
135135

136136
var body: some View {
137137
VStack(alignment: .leading, spacing: 16) {
138-
Text(snippet.name.isEmpty ? "Add Snippet" : "Edit Snippet")
138+
Text(isEditing ? "Edit Snippet" : "Add Snippet")
139139
.font(.headline)
140140

141141
TextField("Display name", text: $snippet.name)

0 commit comments

Comments
 (0)