vOOice/VoiceInk/Views/MetricsView.swift

54 lines
2.1 KiB
Swift

import SwiftUI
import SwiftData
import Charts
import KeyboardShortcuts
struct MetricsView: View {
@Environment(\.modelContext) private var modelContext
@Query(sort: \Transcription.timestamp) private var transcriptions: [Transcription]
@EnvironmentObject private var whisperState: WhisperState
@EnvironmentObject private var hotkeyManager: HotkeyManager
@StateObject private var licenseViewModel = LicenseViewModel()
var body: some View {
VStack {
// Trial Message
if case .trial(let daysRemaining) = licenseViewModel.licenseState {
TrialMessageView(
message: "You have \(daysRemaining) days left in your trial",
type: daysRemaining <= 2 ? .warning : .info,
onAddLicenseKey: {
// Post notification to navigate to VoiceInk Pro tab
NotificationCenter.default.post(
name: .navigateToDestination,
object: nil,
userInfo: ["destination": "VoiceInk Pro"]
)
}
)
.padding()
} else if case .trialExpired = licenseViewModel.licenseState {
TrialMessageView(
message: "Your trial has expired. Upgrade to continue using VoiceInk",
type: .expired,
onAddLicenseKey: {
// Also allow navigation from expired state
NotificationCenter.default.post(
name: .navigateToDestination,
object: nil,
userInfo: ["destination": "VoiceInk Pro"]
)
}
)
.padding()
}
MetricsContent(
transcriptions: Array(transcriptions),
licenseState: licenseViewModel.licenseState
)
}
.background(Color(.controlBackgroundColor))
}
}