Merge pull request #588 from mpretty-cyro/fix/message-request-count-bug
Performance: Count unread message requests thread-first rather than unread-message-first
This commit is contained in:
commit
f05c695756
|
@ -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 {
|
||||
|
|
|
@ -16,7 +16,6 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
+ (instancetype)sharedManager;
|
||||
|
||||
- (NSUInteger)unreadMessagesCount;
|
||||
- (NSUInteger)unreadMessageRequestCount;
|
||||
- (NSUInteger)unreadMessagesCountExcept:(TSThread *)thread;
|
||||
|
||||
- (void)updateApplicationBadgeCount;
|
||||
|
|
|
@ -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<NSString *> *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;
|
||||
|
|
Loading…
Reference in New Issue