VoiceWake: add SSH forward target
This commit is contained in:
@@ -59,6 +59,22 @@ final class AppState: ObservableObject {
|
||||
didSet { UserDefaults.standard.set(self.voiceWakeAdditionalLocaleIDs, forKey: voiceWakeAdditionalLocalesKey) }
|
||||
}
|
||||
|
||||
@Published var voiceWakeForwardEnabled: Bool {
|
||||
didSet { UserDefaults.standard.set(self.voiceWakeForwardEnabled, forKey: voiceWakeForwardEnabledKey) }
|
||||
}
|
||||
|
||||
@Published var voiceWakeForwardTarget: String {
|
||||
didSet { UserDefaults.standard.set(self.voiceWakeForwardTarget, forKey: voiceWakeForwardTargetKey) }
|
||||
}
|
||||
|
||||
@Published var voiceWakeForwardIdentity: String {
|
||||
didSet { UserDefaults.standard.set(self.voiceWakeForwardIdentity, forKey: voiceWakeForwardIdentityKey) }
|
||||
}
|
||||
|
||||
@Published var voiceWakeForwardCommand: String {
|
||||
didSet { UserDefaults.standard.set(self.voiceWakeForwardCommand, forKey: voiceWakeForwardCommandKey) }
|
||||
}
|
||||
|
||||
@Published var isWorking: Bool = false
|
||||
@Published var earBoostActive: Bool = false
|
||||
|
||||
@@ -79,6 +95,13 @@ final class AppState: ObservableObject {
|
||||
self.voiceWakeLocaleID = UserDefaults.standard.string(forKey: voiceWakeLocaleKey) ?? Locale.current.identifier
|
||||
self.voiceWakeAdditionalLocaleIDs = UserDefaults.standard
|
||||
.stringArray(forKey: voiceWakeAdditionalLocalesKey) ?? []
|
||||
self.voiceWakeForwardEnabled = UserDefaults.standard.bool(forKey: voiceWakeForwardEnabledKey)
|
||||
let legacyTarget = Self.legacyTargetString()
|
||||
self.voiceWakeForwardTarget = UserDefaults.standard
|
||||
.string(forKey: voiceWakeForwardTargetKey) ?? legacyTarget
|
||||
self.voiceWakeForwardIdentity = UserDefaults.standard.string(forKey: voiceWakeForwardIdentityKey) ?? ""
|
||||
self.voiceWakeForwardCommand = UserDefaults.standard
|
||||
.string(forKey: voiceWakeForwardCommandKey) ?? defaultVoiceWakeForwardCommand
|
||||
}
|
||||
|
||||
func triggerVoiceEars(ttl: TimeInterval = 5) {
|
||||
@@ -110,6 +133,27 @@ enum AppStateStore {
|
||||
}
|
||||
}
|
||||
|
||||
extension AppState {
|
||||
var voiceWakeForwardConfig: VoiceWakeForwardConfig {
|
||||
VoiceWakeForwardConfig(
|
||||
enabled: self.voiceWakeForwardEnabled,
|
||||
target: self.voiceWakeForwardTarget,
|
||||
identityPath: self.voiceWakeForwardIdentity,
|
||||
commandTemplate: self.voiceWakeForwardCommand,
|
||||
timeout: defaultVoiceWakeForwardTimeout)
|
||||
}
|
||||
|
||||
private static func legacyTargetString() -> String {
|
||||
let host = UserDefaults.standard.string(forKey: voiceWakeForwardHostKey) ?? ""
|
||||
let user = UserDefaults.standard.string(forKey: voiceWakeForwardUserKey) ?? ""
|
||||
let savedPort = UserDefaults.standard.integer(forKey: voiceWakeForwardPortKey)
|
||||
let port = savedPort == 0 ? defaultVoiceWakeForwardPort : savedPort
|
||||
let userPrefix = user.isEmpty ? "" : "\(user)@"
|
||||
let portSuffix = host.isEmpty ? "" : ":\(port)"
|
||||
return "\(userPrefix)\(host)\(portSuffix)"
|
||||
}
|
||||
}
|
||||
|
||||
@MainActor
|
||||
enum AppActivationPolicy {
|
||||
static func apply(showDockIcon: Bool) {
|
||||
|
||||
Reference in New Issue
Block a user