Files
tutti/apps/mobile/ios/TuttiMobile/MobilePreferencesModule.swift
agent-radar 2ed3415fb7
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
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

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
}
}