diff --git a/modules/expo-bluesky-swiss-army/android/src/main/java/expo/modules/blueskyswissarmy/sharedprefs/Preferences.kt b/modules/expo-bluesky-swiss-army/android/src/main/java/expo/modules/blueskyswissarmy/sharedprefs/Preferences.kt index b58a2736b3..b8559b33f1 100644 --- a/modules/expo-bluesky-swiss-army/android/src/main/java/expo/modules/blueskyswissarmy/sharedprefs/Preferences.kt +++ b/modules/expo-bluesky-swiss-army/android/src/main/java/expo/modules/blueskyswissarmy/sharedprefs/Preferences.kt @@ -159,4 +159,22 @@ class Preferences(private val context: Context) { val set = safeInstance.getStringSet(key, setOf()) ?: setOf() return set.contains(value) } + + fun hasValue(key: String): Boolean { + val safeInstance = getInstance(context) + return safeInstance.contains(key) + } + + fun getValues(keys: Set): Map { + val safeInstance = getInstance(context) + return keys.associateWith { key -> + when (val value = safeInstance.all[key]) { + is String -> value + is Float -> value + is Boolean -> value + is Set<*> -> value + else -> null + } + } + } } \ No newline at end of file diff --git a/modules/expo-bluesky-swiss-army/ios/SharedPrefs/SharedPrefs.swift b/modules/expo-bluesky-swiss-army/ios/SharedPrefs/SharedPrefs.swift index e9858aba64..8128a4b2e4 100644 --- a/modules/expo-bluesky-swiss-army/ios/SharedPrefs/SharedPrefs.swift +++ b/modules/expo-bluesky-swiss-army/ios/SharedPrefs/SharedPrefs.swift @@ -2,15 +2,15 @@ import Foundation public class SharedPrefs { public static let shared = SharedPrefs() - + private let defaults = UserDefaults(suiteName: "group.app.bsky") - + init() { if defaults == nil { NSLog("Failed to get user defaults for app group.") } } - + private func getDefaults(_ info: String = "(no info)") -> UserDefaults? { guard let defaults = self.defaults else { NSLog("Failed to get defaults for app group: \(info)") @@ -18,39 +18,39 @@ public class SharedPrefs { } return defaults } - + public func setValue(_ key: String, _ value: String?) { getDefaults(key)?.setValue(value, forKey: key) } - + public func setValue(_ key: String, _ value: Double?) { getDefaults(key)?.setValue(value, forKey: key) } - + public func setValue(_ key: String, _ value: Bool?) { getDefaults(key)?.setValue(value, forKey: key) } - + public func _setAnyValue(_ key: String, _ value: Any?) { getDefaults(key)?.setValue(value, forKey: key) } - + public func removeValue(_ key: String) { getDefaults(key)?.removeObject(forKey: key) } - + public func getString(_ key: String) -> String? { return getDefaults(key)?.string(forKey: key) } - + public func getNumber(_ key: String) -> Double? { return getDefaults(key)?.double(forKey: key) } - + public func getBool(_ key: String) -> Bool? { return getDefaults(key)?.bool(forKey: key) } - + public func addToSet(_ key: String, _ value: String) { var dict: [String:Bool]? if var currDict = getDefaults(key)?.dictionary(forKey: key) as? [String:Bool] { @@ -63,7 +63,7 @@ public class SharedPrefs { } getDefaults(key)?.setValue(dict, forKey: key) } - + public func removeFromSet(_ key: String, _ value: String) { guard var dict = getDefaults(key)?.dictionary(forKey: key) as? [String:Bool] else { return @@ -71,15 +71,19 @@ public class SharedPrefs { dict.removeValue(forKey: value) getDefaults(key)?.setValue(dict, forKey: key) } - + public func setContains(_ key: String, _ value: String) -> Bool { guard let dict = getDefaults(key)?.dictionary(forKey: key) as? [String:Bool] else { return false } return dict[value] == true } - + public func hasValue(_ key: String) -> Bool { return getDefaults(key)?.value(forKey: key) != nil } + + public func getValues(_ keys: [String]) -> [String:Any?]? { + return getDefaults("keys:\(keys)")?.dictionaryWithValues(forKeys: keys) + } }