fix: use yapdatabase transaction for skin tones

This commit is contained in:
Ryan Zhao 2022-06-14 09:47:11 +10:00
parent 48ad72b942
commit 5f4758d36a

View file

@ -29,7 +29,7 @@ public struct EmojiWithSkinTones: Hashable {
}
extension Emoji {
private static let keyValueStore = SDSKeyValueStore(collection: "Emoji+PreferredSkinTonePermutation")
private static let emojiWithPreferredSkinToneCollection = "Emoji+PreferredSkinTonePermutation"
static func allSendableEmojiByCategoryWithPreferredSkinTones(transaction: YapDatabaseReadTransaction) -> [Category: [EmojiWithSkinTones]] {
return Category.allCases.reduce(into: [Category: [EmojiWithSkinTones]]()) { result, category in
@ -38,7 +38,7 @@ extension Emoji {
}
func withPreferredSkinTones(transaction: YapDatabaseReadTransaction) -> EmojiWithSkinTones {
guard let rawSkinTones = Self.keyValueStore.getObject(forKey: rawValue, transaction: transaction) as? [String] else {
guard let rawSkinTones = transaction.object(forKey: rawValue, inCollection: Self.emojiWithPreferredSkinToneCollection) as? [String] else {
return EmojiWithSkinTones(baseEmoji: self, skinTones: nil)
}
@ -47,9 +47,9 @@ extension Emoji {
func setPreferredSkinTones(_ preferredSkinTonePermutation: [SkinTone]?, transaction: YapDatabaseReadWriteTransaction) {
if let preferredSkinTonePermutation = preferredSkinTonePermutation {
Self.keyValueStore.setObject(preferredSkinTonePermutation.map { $0.rawValue }, key: rawValue, transaction: transaction)
transaction.setObject(preferredSkinTonePermutation.map { $0.rawValue }, forKey: rawValue, inCollection: Self.emojiWithPreferredSkinToneCollection)
} else {
Self.keyValueStore.removeValue(forKey: rawValue, transaction: transaction)
transaction.removeObject(forKey: rawValue, inCollection: Self.emojiWithPreferredSkinToneCollection)
}
}