75 lines
2.6 KiB
Swift
75 lines
2.6 KiB
Swift
import Foundation
|
|
|
|
extension UserDefaults {
|
|
enum Keys {
|
|
static let aiProviderApiKey = "VoiceInkAIProviderKey"
|
|
static let licenseKey = "VoiceInkLicense"
|
|
static let trialStartDate = "VoiceInkTrialStartDate"
|
|
static let audioInputMode = "audioInputMode"
|
|
static let selectedAudioDeviceUID = "selectedAudioDeviceUID"
|
|
static let prioritizedDevices = "prioritizedDevices"
|
|
|
|
// Obfuscated keys for license-related data
|
|
enum License {
|
|
static let trialStartDate = "VoiceInkTrialStartDate"
|
|
}
|
|
}
|
|
|
|
// MARK: - AI Provider API Key
|
|
var aiProviderApiKey: String? {
|
|
get { string(forKey: Keys.aiProviderApiKey) }
|
|
set { setValue(newValue, forKey: Keys.aiProviderApiKey) }
|
|
}
|
|
|
|
// MARK: - License Key
|
|
var licenseKey: String? {
|
|
get { string(forKey: Keys.licenseKey) }
|
|
set { setValue(newValue, forKey: Keys.licenseKey) }
|
|
}
|
|
|
|
// MARK: - Trial Start Date (Obfuscated)
|
|
var trialStartDate: Date? {
|
|
get {
|
|
let salt = Obfuscator.getDeviceIdentifier()
|
|
let obfuscatedKey = Obfuscator.encode(Keys.License.trialStartDate, salt: salt)
|
|
|
|
guard let obfuscatedValue = string(forKey: obfuscatedKey),
|
|
let decodedValue = Obfuscator.decode(obfuscatedValue, salt: salt),
|
|
let timestamp = Double(decodedValue) else {
|
|
return nil
|
|
}
|
|
|
|
return Date(timeIntervalSince1970: timestamp)
|
|
}
|
|
set {
|
|
let salt = Obfuscator.getDeviceIdentifier()
|
|
let obfuscatedKey = Obfuscator.encode(Keys.License.trialStartDate, salt: salt)
|
|
|
|
if let date = newValue {
|
|
let timestamp = String(date.timeIntervalSince1970)
|
|
let obfuscatedValue = Obfuscator.encode(timestamp, salt: salt)
|
|
setValue(obfuscatedValue, forKey: obfuscatedKey)
|
|
} else {
|
|
removeObject(forKey: obfuscatedKey)
|
|
}
|
|
}
|
|
}
|
|
|
|
// MARK: - Audio Input Mode
|
|
var audioInputModeRawValue: String? {
|
|
get { string(forKey: Keys.audioInputMode) }
|
|
set { setValue(newValue, forKey: Keys.audioInputMode) }
|
|
}
|
|
|
|
// MARK: - Selected Audio Device UID
|
|
var selectedAudioDeviceUID: String? {
|
|
get { string(forKey: Keys.selectedAudioDeviceUID) }
|
|
set { setValue(newValue, forKey: Keys.selectedAudioDeviceUID) }
|
|
}
|
|
|
|
// MARK: - Prioritized Devices
|
|
var prioritizedDevicesData: Data? {
|
|
get { data(forKey: Keys.prioritizedDevices) }
|
|
set { setValue(newValue, forKey: Keys.prioritizedDevices) }
|
|
}
|
|
} |