Handle emoji availability deserialization failures.
This commit is contained in:
parent
a2f0ea6ce7
commit
01271f60be
@ -33,6 +33,12 @@ extension Emoji {
|
||||
}
|
||||
|
||||
let availableMap = availableStore.allBoolValuesMap(transaction: transaction)
|
||||
guard !availableMap.isEmpty else {
|
||||
Logger.info("Re-building emoji availability cache. Cache could not be loaded.")
|
||||
uncachedEmoji = Emoji.allCases
|
||||
return
|
||||
}
|
||||
|
||||
for emoji in Emoji.allCases {
|
||||
if let available = availableMap[emoji.rawValue] {
|
||||
availableCache[emoji] = available
|
||||
@ -54,6 +60,7 @@ extension Emoji {
|
||||
|
||||
if uncachedAvailability.count > 0 || iosVersionNeedsUpdate {
|
||||
SDSDatabaseStorage.shared.write { transaction in
|
||||
availableStore.removeAll(transaction: transaction)
|
||||
for (emoji, available) in uncachedAvailability {
|
||||
availableStore.setBool(available, key: emoji.rawValue, transaction: transaction)
|
||||
}
|
||||
|
||||
@ -410,9 +410,14 @@ public class SDSKeyValueStore: NSObject {
|
||||
WHERE \(SDSKeyValueStore.collectionColumn.columnName) == ?
|
||||
"""
|
||||
|
||||
return try! PairRecord.fetchAll(grdbTransaction.database,
|
||||
sql: sql,
|
||||
arguments: [collection])
|
||||
do {
|
||||
return try PairRecord.fetchAll(grdbTransaction.database,
|
||||
sql: sql,
|
||||
arguments: [collection])
|
||||
} catch {
|
||||
owsFailDebug("Error: \(error)")
|
||||
return []
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user