feat: use openai for tts instead of deepgram
This commit is contained in:
@@ -1,60 +1,41 @@
|
||||
import Foundation
|
||||
import SwiftUI
|
||||
|
||||
@MainActor
|
||||
class SettingsViewModel: ObservableObject {
|
||||
@Published var settings: Settings
|
||||
@Published var isSaving = false
|
||||
@Published var saveSuccessful = false
|
||||
@Published var errorMessage: String?
|
||||
@Published var settings = Settings()
|
||||
@Published var saveMessage = ""
|
||||
@Published var showingSaveMessage = false
|
||||
|
||||
init() {
|
||||
self.settings = Settings()
|
||||
loadSettings()
|
||||
}
|
||||
|
||||
func loadSettings() {
|
||||
// Load API keys from Keychain
|
||||
settings.deepgramKey = KeychainHelper.shared.get(forKey: "deepgramKey") ?? ""
|
||||
settings.openAIKey = KeychainHelper.shared.get(forKey: "openAIKey") ?? ""
|
||||
settings.userBlurb = KeychainHelper.shared.get(forKey: "userBlurb") ?? ""
|
||||
settings.systemPrompt = KeychainHelper.shared.get(forKey: "systemPrompt") ?? Settings.defaultSystemPrompt
|
||||
settings.systemPrompt = KeychainHelper.shared.get(forKey: "systemPrompt") ?? Settings.defaultSystemPrompt()
|
||||
}
|
||||
|
||||
func saveSettings() {
|
||||
isSaving = true
|
||||
errorMessage = nil
|
||||
saveSuccessful = false
|
||||
|
||||
// Validate system prompt template before saving
|
||||
let validation = settings.validateSystemPrompt()
|
||||
if !validation.isValid {
|
||||
let missingVars = validation.missingVariables.joined(separator: ", ")
|
||||
errorMessage = "System prompt is missing required variables: \(missingVars). Please include these variables in your template using double curly braces (e.g., {{transcript}})."
|
||||
isSaving = false
|
||||
return
|
||||
}
|
||||
|
||||
// Save to Keychain
|
||||
let deepgramSaved = KeychainHelper.shared.save(settings.deepgramKey, forKey: "deepgramKey")
|
||||
let openAISaved = KeychainHelper.shared.save(settings.openAIKey, forKey: "openAIKey")
|
||||
let blurbSaved = KeychainHelper.shared.save(settings.userBlurb, forKey: "userBlurb")
|
||||
let promptSaved = KeychainHelper.shared.save(settings.systemPrompt, forKey: "systemPrompt")
|
||||
|
||||
if deepgramSaved && openAISaved && blurbSaved && promptSaved {
|
||||
saveSuccessful = true
|
||||
// Show success briefly
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 2) { [weak self] in
|
||||
self?.saveSuccessful = false
|
||||
}
|
||||
if openAISaved && blurbSaved && promptSaved {
|
||||
saveMessage = "Settings saved successfully!"
|
||||
} else {
|
||||
errorMessage = "Failed to save some settings. Please try again."
|
||||
saveMessage = "Error saving settings"
|
||||
}
|
||||
|
||||
isSaving = false
|
||||
showingSaveMessage = true
|
||||
|
||||
// Hide the message after 3 seconds
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
|
||||
self.showingSaveMessage = false
|
||||
}
|
||||
}
|
||||
|
||||
func resetToDefaults() {
|
||||
settings.systemPrompt = Settings.defaultSystemPrompt
|
||||
settings.systemPrompt = Settings.defaultSystemPrompt()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user