33 lines
1002 B
Swift
33 lines
1002 B
Swift
import AppIntents
|
|
import Foundation
|
|
import AppKit
|
|
|
|
struct ToggleMiniRecorderIntent: AppIntent {
|
|
static var title: LocalizedStringResource = "Toggle VoiceInk Recorder"
|
|
static var description = IntentDescription("Start or stop the VoiceInk mini recorder for voice transcription.")
|
|
|
|
static var openAppWhenRun: Bool = false
|
|
|
|
@MainActor
|
|
func perform() async throws -> some IntentResult & ProvidesDialog {
|
|
NotificationCenter.default.post(name: .toggleMiniRecorder, object: nil)
|
|
|
|
let dialog = IntentDialog(stringLiteral: "VoiceInk recorder toggled")
|
|
return .result(dialog: dialog)
|
|
}
|
|
}
|
|
|
|
enum IntentError: Error, LocalizedError {
|
|
case appNotAvailable
|
|
case serviceNotAvailable
|
|
|
|
var errorDescription: String? {
|
|
switch self {
|
|
case .appNotAvailable:
|
|
return "VoiceInk app is not available"
|
|
case .serviceNotAvailable:
|
|
return "VoiceInk recording service is not available"
|
|
}
|
|
}
|
|
}
|