diff --git a/SignalMessaging/groups/GroupsV2ProfileKeyUpdater.swift b/SignalMessaging/groups/GroupsV2ProfileKeyUpdater.swift index 7b8e5186c9..bad10c8974 100644 --- a/SignalMessaging/groups/GroupsV2ProfileKeyUpdater.swift +++ b/SignalMessaging/groups/GroupsV2ProfileKeyUpdater.swift @@ -130,10 +130,9 @@ class GroupsV2ProfileKeyUpdater { // Only one update should be in flight at a time. return } - let groupIds = self.databaseStorage.read { transaction in - return self.keyValueStore.allDataValues(transaction: transaction) - } - guard let groupId = groupIds.first else { + guard let groupId = (self.databaseStorage.read { transaction in + return self.keyValueStore.anyDataValue(transaction: transaction) + }) else { return } diff --git a/SignalServiceKit/src/Storage/Database/SDSKeyValueStore.swift b/SignalServiceKit/src/Storage/Database/SDSKeyValueStore.swift index 5ee2b3ce26..13e62ebe2e 100644 --- a/SignalServiceKit/src/Storage/Database/SDSKeyValueStore.swift +++ b/SignalServiceKit/src/Storage/Database/SDSKeyValueStore.swift @@ -376,6 +376,19 @@ public class SDSKeyValueStore: NSObject { } } + @objc + public func anyDataValue(transaction: SDSAnyReadTransaction) -> Data? { + let keys = allKeys(transaction: transaction).shuffled() + guard let firstKey = keys.first else { + return nil + } + guard let data = self.getData(firstKey, transaction: transaction) else { + owsFailDebug("Missing data for key: \(firstKey)") + return nil + } + return data + } + @objc public func allKeys(transaction: SDSAnyReadTransaction) -> [String] { switch transaction.readTransaction {