diff --git a/Session/Home/HomeVC.swift b/Session/Home/HomeVC.swift index 8bbc7a523..61261dad7 100644 --- a/Session/Home/HomeVC.swift +++ b/Session/Home/HomeVC.swift @@ -7,7 +7,18 @@ final class HomeVC : BaseVC, UITableViewDataSource, UITableViewDelegate, NewConv private var threadViewModelCache: [String:ThreadViewModel] = [:] // Thread ID to ThreadViewModel private var tableViewTopConstraint: NSLayoutConstraint! private var unreadMessageRequestCount: UInt { - OWSMessageUtils.sharedManager().unreadMessageRequestCount() + var count: UInt = 0 + + dbConnection.read { transaction in + let ext = transaction.ext(TSThreadDatabaseViewExtensionName) as! YapDatabaseViewTransaction + ext.enumerateRows(inGroup: TSMessageRequestGroup) { _, _, object, _, _, _ in + if ((object as? TSThread)?.unreadMessageCount(transaction: transaction) ?? 0) > 0 { + count += 1 + } + } + } + + return count } private var threadCount: UInt { diff --git a/SignalUtilitiesKit/Messaging/OWSMessageUtils.h b/SignalUtilitiesKit/Messaging/OWSMessageUtils.h index 3069360bf..ef693b8dc 100644 --- a/SignalUtilitiesKit/Messaging/OWSMessageUtils.h +++ b/SignalUtilitiesKit/Messaging/OWSMessageUtils.h @@ -16,7 +16,6 @@ NS_ASSUME_NONNULL_BEGIN + (instancetype)sharedManager; - (NSUInteger)unreadMessagesCount; -- (NSUInteger)unreadMessageRequestCount; - (NSUInteger)unreadMessagesCountExcept:(TSThread *)thread; - (void)updateApplicationBadgeCount; diff --git a/SignalUtilitiesKit/Messaging/OWSMessageUtils.m b/SignalUtilitiesKit/Messaging/OWSMessageUtils.m index cbc703c91..543971dbc 100644 --- a/SignalUtilitiesKit/Messaging/OWSMessageUtils.m +++ b/SignalUtilitiesKit/Messaging/OWSMessageUtils.m @@ -93,27 +93,6 @@ NS_ASSUME_NONNULL_BEGIN return count; } -- (NSUInteger)unreadMessageRequestCount { - __block NSUInteger count = 0; - - [LKStorage readWithBlock:^(YapDatabaseReadTransaction *transaction) { - YapDatabaseViewTransaction *unreadMessages = [transaction ext:TSUnreadDatabaseViewExtensionName]; - NSArray *allGroups = [unreadMessages allGroups]; - // FIXME: Confusingly, `allGroups` includes contact threads as well - for (NSString *groupID in allGroups) { - TSThread *thread = [TSThread fetchObjectWithUniqueID:groupID transaction:transaction]; - - // Only increase the count for message requests - if (![thread isMessageRequestUsingTransaction:transaction]) { continue; } - if ([unreadMessages numberOfItemsInGroup:groupID] > 0) { - count += 1; - } - } - }]; - - return count; -} - - (NSUInteger)unreadMessagesCountExcept:(TSThread *)thread { __block NSUInteger numberOfItems;