Skip to content

Commit 5318087

Browse files
committed
Move custom prompt binding to view model
1 parent b84ead7 commit 5318087

2 files changed

Lines changed: 17 additions & 14 deletions

File tree

Recap/UseCases/Settings/Components/TabViews/GeneralSettingsView.swift

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -90,14 +90,7 @@ struct GeneralSettingsView<ViewModel: GeneralSettingsViewModelType>: View {
9090
VStack(alignment: .leading, spacing: 12) {
9191
CustomTextEditor(
9292
title: "Prompt Template",
93-
text: Binding(
94-
get: { viewModel.customPromptTemplate },
95-
set: { newTemplate in
96-
Task {
97-
await viewModel.updateCustomPromptTemplate(newTemplate)
98-
}
99-
}
100-
),
93+
text: $viewModel.customPromptTemplate,
10194
placeholder: "Enter your custom prompt template here...",
10295
height: 120
10396
)

Recap/UseCases/Settings/ViewModels/General/GeneralSettingsViewModel.swift

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,17 @@ final class GeneralSettingsViewModel: ObservableObject, GeneralSettingsViewModel
88
@Published private(set) var selectedProvider: LLMProvider = .default
99
@Published private(set) var autoDetectMeetings: Bool = false
1010
@Published private(set) var isAutoStopRecording: Bool = false
11-
@Published var customPromptTemplate: String? = nil
11+
@Published private var _customPromptTemplate: String = ""
12+
13+
var customPromptTemplate: String {
14+
get { _customPromptTemplate }
15+
set {
16+
_customPromptTemplate = newValue
17+
Task {
18+
await updateCustomPromptTemplate(newValue)
19+
}
20+
}
21+
}
1222
@Published private(set) var isLoading = false
1323
@Published private(set) var errorMessage: String?
1424
@Published private(set) var showToast = false
@@ -59,12 +69,12 @@ final class GeneralSettingsViewModel: ObservableObject, GeneralSettingsViewModel
5969
selectedProvider = preferences.selectedProvider
6070
autoDetectMeetings = preferences.autoDetectMeetings
6171
isAutoStopRecording = preferences.autoStopRecording
62-
customPromptTemplate = preferences.summaryPromptTemplate ?? UserPreferencesInfo.defaultPromptTemplate
72+
_customPromptTemplate = preferences.summaryPromptTemplate ?? UserPreferencesInfo.defaultPromptTemplate
6373
} catch {
6474
selectedProvider = .default
6575
autoDetectMeetings = false
6676
isAutoStopRecording = false
67-
customPromptTemplate = UserPreferencesInfo.defaultPromptTemplate
77+
_customPromptTemplate = UserPreferencesInfo.defaultPromptTemplate
6878
}
6979
await loadModels()
7080
}
@@ -174,7 +184,7 @@ final class GeneralSettingsViewModel: ObservableObject, GeneralSettingsViewModel
174184
func updateCustomPromptTemplate(_ template: String) async {
175185
errorMessage = nil
176186
let trimmedTemplate = template.trimmingCharacters(in: .whitespacesAndNewlines)
177-
customPromptTemplate = trimmedTemplate
187+
_customPromptTemplate = trimmedTemplate
178188

179189
do {
180190
let templateToSave = trimmedTemplate.isEmpty ? nil : trimmedTemplate
@@ -185,7 +195,7 @@ final class GeneralSettingsViewModel: ObservableObject, GeneralSettingsViewModel
185195
}
186196

187197
func resetToDefaultPrompt() async {
188-
customPromptTemplate = UserPreferencesInfo.defaultPromptTemplate
189-
await updateCustomPromptTemplate(UserPreferencesInfo.defaultPromptTemplate)
198+
await updateCustomPromptTemplate("")
199+
_customPromptTemplate = UserPreferencesInfo.defaultPromptTemplate
190200
}
191201
}

0 commit comments

Comments
 (0)