Basic recording functionality

This commit is contained in:
Owen Gretzinger
2025-07-10 13:09:32 -04:00
parent b9b1fbedd5
commit 417d751d7a
10 changed files with 738 additions and 7 deletions
+71 -5
View File
@@ -8,14 +8,80 @@
import SwiftUI
struct ContentView: View {
@StateObject private var audioManager = SimpleAudioManager()
@State private var deepgramKey = ""
@State private var openAIKey = ""
@State private var userBlurb = ""
@State private var systemPrompt = "Generate meeting notes from transcript and notes."
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")
VStack(spacing: 20) {
Text("Notetaker Settings")
.font(.title)
TextField("Deepgram API Key", text: $deepgramKey)
TextField("OpenAI API Key", text: $openAIKey)
TextField("About Yourself (for prompt)", text: $userBlurb)
TextEditor(text: $systemPrompt)
.frame(height: 100)
Button("Save") {
saveSettings()
}
Divider()
Toggle("Capture System Audio", isOn: $audioManager.captureSystemAudio)
.disabled(audioManager.isRecording)
HStack {
Button("Start Recording") {
audioManager.startRecording()
}
.disabled(audioManager.isRecording)
Button("Stop Recording") {
audioManager.stopRecording()
}
.disabled(!audioManager.isRecording)
}
if audioManager.isRecording {
Text(audioManager.captureSystemAudio ? "🔴 Recording microphone + system audio..." : "🔴 Recording microphone...")
.foregroundColor(.red)
}
Text("Live Transcript:")
.font(.headline)
ScrollView {
Text(audioManager.transcript.isEmpty ? "No transcript yet..." : audioManager.transcript)
.frame(maxWidth: .infinity, alignment: .leading)
.padding()
}
.frame(height: 150)
.border(Color.gray)
}
.padding()
.frame(minWidth: 500, minHeight: 600)
.onAppear {
loadSettings()
}
}
func saveSettings() {
_ = KeychainHelper.shared.save(deepgramKey, forKey: "deepgramKey")
_ = KeychainHelper.shared.save(openAIKey, forKey: "openAIKey")
_ = KeychainHelper.shared.save(userBlurb, forKey: "userBlurb")
_ = KeychainHelper.shared.save(systemPrompt, forKey: "systemPrompt")
print("Settings saved!")
}
private func loadSettings() {
deepgramKey = KeychainHelper.shared.get(forKey: "deepgramKey") ?? ""
openAIKey = KeychainHelper.shared.get(forKey: "openAIKey") ?? ""
userBlurb = KeychainHelper.shared.get(forKey: "userBlurb") ?? ""
systemPrompt = KeychainHelper.shared.get(forKey: "systemPrompt") ?? "Generate meeting notes from transcript and notes."
}
}