91 lines
3.0 KiB
Swift
91 lines
3.0 KiB
Swift
//
|
|
// ContentView.swift
|
|
// notetaker
|
|
//
|
|
// Created by Owen Gretzinger on 2025-07-10.
|
|
//
|
|
|
|
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(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."
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
ContentView()
|
|
}
|