This commit is contained in:
Hailey
2024-06-26 11:50:49 -07:00
parent d976ab31c6
commit 1948495857
3 changed files with 29 additions and 29 deletions
@@ -3,15 +3,15 @@ import ExpoBlueskySwissArmy
let APP_GROUP = "group.app.bsky" let APP_GROUP = "group.app.bsky"
let DEFAULTS: [String:Any] = [ let DEFAULTS: [String: Any] = [
"playSoundChat" : true, "playSoundChat": true,
"playSoundFollow": false, "playSoundFollow": false,
"playSoundLike": false, "playSoundLike": false,
"playSoundMention": false, "playSoundMention": false,
"playSoundQuote": false, "playSoundQuote": false,
"playSoundReply": false, "playSoundReply": false,
"playSoundRepost": false, "playSoundRepost": false,
"badgeCount": 0, "badgeCount": 0
] ]
let INCREMENTED_FOR_KEY = "incremented-for-convos" let INCREMENTED_FOR_KEY = "incremented-for-convos"
@@ -25,10 +25,10 @@ let INCREMENTED_FOR_KEY = "incremented-for-convos"
*/ */
public class ExpoBackgroundNotificationHandlerModule: Module { public class ExpoBackgroundNotificationHandlerModule: Module {
let userDefaults = UserDefaults(suiteName: APP_GROUP) let userDefaults = UserDefaults(suiteName: APP_GROUP)
public func definition() -> ModuleDefinition { public func definition() -> ModuleDefinition {
Name("ExpoBackgroundNotificationHandler") Name("ExpoBackgroundNotificationHandler")
OnCreate { OnCreate {
DEFAULTS.forEach { p in DEFAULTS.forEach { p in
if !SharedPrefs.shared.hasValue(p.key) { if !SharedPrefs.shared.hasValue(p.key) {
@@ -36,37 +36,37 @@ public class ExpoBackgroundNotificationHandlerModule: Module {
} }
} }
} }
AsyncFunction("getPrefsAsync") { AsyncFunction("getPrefsAsync") {
let keys = Array(DEFAULTS.keys) let keys = Array(DEFAULTS.keys)
return SharedPrefs.shared.getValues(keys) return SharedPrefs.shared.getValues(keys)
} }
AsyncFunction("resetGenericCountAsync") { AsyncFunction("resetGenericCountAsync") {
SharedPrefs.shared.setValue(BadgeType.generic.toKeyName(), 0) SharedPrefs.shared.setValue(BadgeType.generic.toKeyName(), 0)
} }
AsyncFunction("maybeIncrementMessagesCountAsync") { (convoId: String) in AsyncFunction("maybeIncrementMessagesCountAsync") { (convoId: String) in
guard !SharedPrefs.shared.setContains(INCREMENTED_FOR_KEY, convoId) else { guard !SharedPrefs.shared.setContains(INCREMENTED_FOR_KEY, convoId) else {
return false return false
} }
var count = SharedPrefs.shared.getNumber(BadgeType.messages.toKeyName()) ?? 0 var count = SharedPrefs.shared.getNumber(BadgeType.messages.toKeyName()) ?? 0
count += 1 count += 1
SharedPrefs.shared.addToSet(INCREMENTED_FOR_KEY, convoId) SharedPrefs.shared.addToSet(INCREMENTED_FOR_KEY, convoId)
SharedPrefs.shared.setValue(BadgeType.messages.toKeyName(), count) SharedPrefs.shared.setValue(BadgeType.messages.toKeyName(), count)
return true return true
} }
AsyncFunction("maybeDecrementMessagesCountAsync") { (convoId: String) in AsyncFunction("maybeDecrementMessagesCountAsync") { (convoId: String) in
guard SharedPrefs.shared.setContains(INCREMENTED_FOR_KEY, convoId) else { guard SharedPrefs.shared.setContains(INCREMENTED_FOR_KEY, convoId) else {
return false return false
} }
var count = SharedPrefs.shared.getNumber(BadgeType.messages.toKeyName()) ?? 0 var count = SharedPrefs.shared.getNumber(BadgeType.messages.toKeyName()) ?? 0
count -= 1 count -= 1
SharedPrefs.shared.removeFromSet(INCREMENTED_FOR_KEY, convoId) SharedPrefs.shared.removeFromSet(INCREMENTED_FOR_KEY, convoId)
SharedPrefs.shared.setValue(BadgeType.messages.toKeyName(), count) SharedPrefs.shared.setValue(BadgeType.messages.toKeyName(), count)
return true return true
@@ -74,10 +74,10 @@ public class ExpoBackgroundNotificationHandlerModule: Module {
} }
} }
enum BadgeType : String, Enumerable { enum BadgeType: String, Enumerable {
case generic case generic
case messages case messages
func toKeyName() -> String { func toKeyName() -> String {
switch self { switch self {
case .generic: case .generic:
@@ -3,7 +3,7 @@ import ExpoModulesCore
public class ExpoBlueskySharedPrefsModule: Module { public class ExpoBlueskySharedPrefsModule: Module {
let defaults = UserDefaults(suiteName: "group.app.bsky") let defaults = UserDefaults(suiteName: "group.app.bsky")
func getDefaults(_ info: String = "(no info)") -> UserDefaults? { func getDefaults(_ info: String = "(no info)") -> UserDefaults? {
guard let defaults = self.defaults else { guard let defaults = self.defaults else {
NSLog("Failed to get defaults for app group: \(info)") NSLog("Failed to get defaults for app group: \(info)")
@@ -14,7 +14,7 @@ public class ExpoBlueskySharedPrefsModule: Module {
public func definition() -> ModuleDefinition { public func definition() -> ModuleDefinition {
Name("ExpoBlueskySharedPrefs") Name("ExpoBlueskySharedPrefs")
AsyncFunction("setValueAsync") { (key: String, value: JavaScriptValue, promise: Promise) in AsyncFunction("setValueAsync") { (key: String, value: JavaScriptValue, promise: Promise) in
if value.isString() { if value.isString() {
SharedPrefs.shared.setValue(key, value.getString()) SharedPrefs.shared.setValue(key, value.getString())
@@ -28,7 +28,7 @@ public class ExpoBlueskySharedPrefsModule: Module {
promise.reject("UNSUPPORTED_TYPE_ERROR", "Attempted to set an unsupported type") promise.reject("UNSUPPORTED_TYPE_ERROR", "Attempted to set an unsupported type")
} }
} }
AsyncFunction("removeValueAsync") { (key: String) in AsyncFunction("removeValueAsync") { (key: String) in
SharedPrefs.shared.removeValue(key) SharedPrefs.shared.removeValue(key)
} }
@@ -36,23 +36,23 @@ public class ExpoBlueskySharedPrefsModule: Module {
AsyncFunction("getStringAsync") { (key: String) in AsyncFunction("getStringAsync") { (key: String) in
return SharedPrefs.shared.getString(key) return SharedPrefs.shared.getString(key)
} }
AsyncFunction("getBoolAsync") { (key: String) in AsyncFunction("getBoolAsync") { (key: String) in
return SharedPrefs.shared.getBool(key) return SharedPrefs.shared.getBool(key)
} }
AsyncFunction("getNumberAsync") { (key: String) in AsyncFunction("getNumberAsync") { (key: String) in
return SharedPrefs.shared.getNumber(key) return SharedPrefs.shared.getNumber(key)
} }
AsyncFunction("addToSetAsync") { (key: String, value: String) in AsyncFunction("addToSetAsync") { (key: String, value: String) in
SharedPrefs.shared.addToSet(key, value) SharedPrefs.shared.addToSet(key, value)
} }
AsyncFunction("removeFromSetAsync") { (key: String, value: String) in AsyncFunction("removeFromSetAsync") { (key: String, value: String) in
SharedPrefs.shared.removeFromSet(key, value) SharedPrefs.shared.removeFromSet(key, value)
} }
AsyncFunction("setContainsAsync") { (key: String, value: String) in AsyncFunction("setContainsAsync") { (key: String, value: String) in
return SharedPrefs.shared.setContains(key, value) return SharedPrefs.shared.setContains(key, value)
} }
@@ -52,20 +52,20 @@ public class SharedPrefs {
} }
public func addToSet(_ key: String, _ value: String) { public func addToSet(_ key: String, _ value: String) {
var dict: [String:Bool]? var dict: [String: Bool]?
if var currDict = getDefaults(key)?.dictionary(forKey: key) as? [String:Bool] { if var currDict = getDefaults(key)?.dictionary(forKey: key) as? [String: Bool] {
currDict[value] = true currDict[value] = true
dict = currDict dict = currDict
} else { } else {
dict = [ dict = [
value : true value: true
] ]
} }
getDefaults(key)?.setValue(dict, forKey: key) getDefaults(key)?.setValue(dict, forKey: key)
} }
public func removeFromSet(_ key: String, _ value: String) { public func removeFromSet(_ key: String, _ value: String) {
guard var dict = getDefaults(key)?.dictionary(forKey: key) as? [String:Bool] else { guard var dict = getDefaults(key)?.dictionary(forKey: key) as? [String: Bool] else {
return return
} }
dict.removeValue(forKey: value) dict.removeValue(forKey: value)
@@ -73,7 +73,7 @@ public class SharedPrefs {
} }
public func setContains(_ key: String, _ value: String) -> Bool { public func setContains(_ key: String, _ value: String) -> Bool {
guard let dict = getDefaults(key)?.dictionary(forKey: key) as? [String:Bool] else { guard let dict = getDefaults(key)?.dictionary(forKey: key) as? [String: Bool] else {
return false return false
} }
return dict[value] == true return dict[value] == true
@@ -83,7 +83,7 @@ public class SharedPrefs {
return getDefaults(key)?.value(forKey: key) != nil return getDefaults(key)?.value(forKey: key) != nil
} }
public func getValues(_ keys: [String]) -> [String:Any?]? { public func getValues(_ keys: [String]) -> [String: Any?]? {
return getDefaults("keys:\(keys)")?.dictionaryWithValues(forKeys: keys) return getDefaults("keys:\(keys)")?.dictionaryWithValues(forKeys: keys)
} }
} }