63 lines
1.8 KiB
Swift
63 lines
1.8 KiB
Swift
import Foundation
|
|
import ExpoModulesCore
|
|
|
|
public class ExpoBlueskySharedPrefsModule: Module {
|
|
let defaults = UserDefaults(suiteName: "group.app.bsky")
|
|
|
|
func getDefaults(_ info: String = "(no info)") -> UserDefaults? {
|
|
guard let defaults = self.defaults else {
|
|
NSLog("Failed to get defaults for app group: \(info)")
|
|
return nil
|
|
}
|
|
return defaults
|
|
}
|
|
|
|
public func definition() -> ModuleDefinition {
|
|
Name("ExpoBlueskySharedPrefs")
|
|
|
|
// JavaScripValue causes a crash when trying to check `isString()`. Let's
|
|
// explicitly define setString instead.
|
|
Function("setString") { (key: String, value: String?) in
|
|
SharedPrefs.shared.setValue(key, value)
|
|
}
|
|
|
|
Function("setValue") { (key: String, value: JavaScriptValue) in
|
|
if value.isNumber() {
|
|
SharedPrefs.shared.setValue(key, value.getDouble())
|
|
} else if value.isBool() {
|
|
SharedPrefs.shared.setValue(key, value.getBool())
|
|
} else if value.isNull() || value.isUndefined() {
|
|
SharedPrefs.shared.removeValue(key)
|
|
}
|
|
}
|
|
|
|
Function("removeValue") { (key: String) in
|
|
SharedPrefs.shared.removeValue(key)
|
|
}
|
|
|
|
Function("getString") { (key: String) in
|
|
return SharedPrefs.shared.getString(key)
|
|
}
|
|
|
|
Function("getBool") { (key: String) in
|
|
return SharedPrefs.shared.getBool(key)
|
|
}
|
|
|
|
Function("getNumber") { (key: String) in
|
|
return SharedPrefs.shared.getNumber(key)
|
|
}
|
|
|
|
Function("addToSet") { (key: String, value: String) in
|
|
SharedPrefs.shared.addToSet(key, value)
|
|
}
|
|
|
|
Function("removeFromSet") { (key: String, value: String) in
|
|
SharedPrefs.shared.removeFromSet(key, value)
|
|
}
|
|
|
|
Function("setContains") { (key: String, value: String) in
|
|
return SharedPrefs.shared.setContains(key, value)
|
|
}
|
|
}
|
|
}
|