diff --git a/MatrixKit/Models/Room/MXKRoomDataSourceManager.h b/MatrixKit/Models/Room/MXKRoomDataSourceManager.h index 60f63e796..3c8ca2765 100644 --- a/MatrixKit/Models/Room/MXKRoomDataSourceManager.h +++ b/MatrixKit/Models/Room/MXKRoomDataSourceManager.h @@ -73,6 +73,11 @@ typedef enum : NSUInteger { */ + (NSUInteger)missedDiscussionsCount; +/** + The current number of rooms with unread highlighted messages. + */ ++ (NSUInteger)missedHighlightDiscussionsCount; + /** Mark all messages as read. */ diff --git a/MatrixKit/Models/Room/MXKRoomDataSourceManager.m b/MatrixKit/Models/Room/MXKRoomDataSourceManager.m index 5e25d3ae0..22f2e65a5 100644 --- a/MatrixKit/Models/Room/MXKRoomDataSourceManager.m +++ b/MatrixKit/Models/Room/MXKRoomDataSourceManager.m @@ -140,6 +140,34 @@ + (NSUInteger)missedDiscussionsCount return roomCount; } ++ (NSUInteger)missedHighlightDiscussionsCount +{ + NSUInteger roomCount = 0; + + // Sum here all the room with unread highlighted messages (retrieved from the existing room data sources) + @synchronized(_roomDataSourceManagers) + { + NSArray *mxSessionIds = _roomDataSourceManagers.allKeys; + for (NSString *mxSessionId in mxSessionIds) + { + MXKRoomDataSourceManager *roomDataSourceManager = [_roomDataSourceManagers objectForKey:mxSessionId]; + if (roomDataSourceManager) + { + NSArray *roomDataSources = roomDataSourceManager->roomDataSources.allValues; + for (MXKRoomDataSource *roomDataSource in roomDataSources) + { + if (roomDataSource.highlightCount) + { + roomCount ++; + } + } + } + } + } + + return roomCount; +} + + (void)markAllMessagesAsRead { // Reset the unread count in all the existing room data sources.