Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
58 lines
1.4 KiB
Swift
58 lines
1.4 KiB
Swift
import Foundation
|
|
import React
|
|
|
|
@objc(TuttiMobilePreferences)
|
|
final class MobilePreferencesModule: NSObject {
|
|
private let defaults = UserDefaults.standard
|
|
|
|
@objc
|
|
static func requiresMainQueueSetup() -> Bool {
|
|
false
|
|
}
|
|
|
|
@objc
|
|
func loadThemePreference() -> String {
|
|
Self.normalizeThemePreference(
|
|
defaults.string(forKey: Self.themePreferenceKey)
|
|
)
|
|
}
|
|
|
|
@objc(saveThemePreference:resolver:rejecter:)
|
|
func saveThemePreference(
|
|
_ preference: String,
|
|
resolver resolve: RCTPromiseResolveBlock,
|
|
rejecter reject: RCTPromiseRejectBlock
|
|
) {
|
|
guard Self.supportedThemePreferences.contains(preference) else {
|
|
reject(
|
|
"INVALID_THEME_PREFERENCE",
|
|
"Unsupported Mobile theme preference",
|
|
nil
|
|
)
|
|
return
|
|
}
|
|
defaults.set(preference, forKey: Self.themePreferenceKey)
|
|
guard defaults.string(forKey: Self.themePreferenceKey) == preference else {
|
|
reject(
|
|
"THEME_PREFERENCE_WRITE_FAILED",
|
|
"Unable to save Mobile theme preference",
|
|
nil
|
|
)
|
|
return
|
|
}
|
|
resolve(nil)
|
|
}
|
|
|
|
private static let supportedThemePreferences: Set<String> = [
|
|
"system", "light", "dark",
|
|
]
|
|
private static let themePreferenceKey = "themePreference"
|
|
|
|
private static func normalizeThemePreference(_ value: String?) -> String {
|
|
guard let value, supportedThemePreferences.contains(value) else {
|
|
return "system"
|
|
}
|
|
return value
|
|
}
|
|
}
|