mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-30 08:12:40 +00:00
Console: Recents - Set blue the background cell for room with unread bing message(s).
This commit is contained in:
parent
0f93cbcd41
commit
914bccca3e
4 changed files with 19 additions and 4 deletions
|
@ -26,6 +26,7 @@ extern NSString *const kRecentRoomUpdatedByBackPagination;
|
|||
@property (nonatomic, readonly) NSString *lastEventDescription;
|
||||
@property (nonatomic, readonly) uint64_t lastEventOriginServerTs;
|
||||
@property (nonatomic, readonly) NSUInteger unreadCount;
|
||||
@property (nonatomic, readonly) BOOL containsBingUnread;
|
||||
|
||||
- (id)initWithLastEvent:(MXEvent*)event andRoomState:(MXRoomState*)roomState markAsUnread:(BOOL)isUnread;
|
||||
// Update the current last event description with the provided event, except if this description is empty (see unsupported/unexpected events).
|
||||
|
|
|
@ -39,6 +39,9 @@ NSString *const kRecentRoomUpdatedByBackPagination = @"kRecentRoomUpdatedByBackP
|
|||
_lastEventOriginServerTs = event.originServerTs;
|
||||
_unreadCount = isUnread ? 1 : 0;
|
||||
|
||||
// In case of unread, check whether the last event description contains bing words
|
||||
_containsBingUnread = (isUnread && !event.isState && !event.redactedBecause && [mxHandler containsBingWord:_lastEventDescription]);
|
||||
|
||||
// Keep ref on event
|
||||
lastEvent = event;
|
||||
|
||||
|
@ -51,8 +54,9 @@ NSString *const kRecentRoomUpdatedByBackPagination = @"kRecentRoomUpdatedByBackP
|
|||
}
|
||||
|
||||
- (BOOL)updateWithLastEvent:(MXEvent*)event andRoomState:(MXRoomState*)roomState markAsUnread:(BOOL)isUnread {
|
||||
MatrixSDKHandler *mxHandler = [MatrixSDKHandler sharedHandler];
|
||||
// Check whether the description of the provided event is not empty
|
||||
NSString *description = [[MatrixSDKHandler sharedHandler] displayTextForEvent:event withRoomState:roomState inSubtitleMode:YES];
|
||||
NSString *description = [mxHandler displayTextForEvent:event withRoomState:roomState inSubtitleMode:YES];
|
||||
if (description.length) {
|
||||
[self cancelBackPagination];
|
||||
// Update current last event
|
||||
|
@ -61,6 +65,7 @@ NSString *const kRecentRoomUpdatedByBackPagination = @"kRecentRoomUpdatedByBackP
|
|||
_lastEventOriginServerTs = event.originServerTs;
|
||||
if (isUnread) {
|
||||
_unreadCount ++;
|
||||
_containsBingUnread = (_containsBingUnread || (!event.isState && !event.redactedBecause && [mxHandler containsBingWord:_lastEventDescription]));
|
||||
}
|
||||
return YES;
|
||||
} else if (_lastEventDescription.length) {
|
||||
|
@ -73,11 +78,15 @@ NSString *const kRecentRoomUpdatedByBackPagination = @"kRecentRoomUpdatedByBackP
|
|||
MXEvent *redactedEvent = [lastEvent prune];
|
||||
redactedEvent.redactedBecause = event.originalDictionary;
|
||||
|
||||
_lastEventDescription = [[MatrixSDKHandler sharedHandler] displayTextForEvent:redactedEvent withRoomState:nil inSubtitleMode:YES];
|
||||
_lastEventDescription = [mxHandler displayTextForEvent:redactedEvent withRoomState:nil inSubtitleMode:YES];
|
||||
if (!_lastEventDescription.length) {
|
||||
// The current last event must be removed, decrement the unread count (if not null)
|
||||
if (_unreadCount) {
|
||||
_unreadCount--;
|
||||
|
||||
if (_unreadCount == 0) {
|
||||
_containsBingUnread = NO;
|
||||
} // else _containsBingUnread may be false, we should perhaps reset this flag here
|
||||
}
|
||||
// Trigger back pagination to get an event with a non empty description
|
||||
[self triggerBackPagination];
|
||||
|
@ -91,6 +100,7 @@ NSString *const kRecentRoomUpdatedByBackPagination = @"kRecentRoomUpdatedByBackP
|
|||
|
||||
- (void)resetUnreadCount {
|
||||
_unreadCount = 0;
|
||||
_containsBingUnread = NO;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
|
|
|
@ -42,7 +42,7 @@ NSString *const kFailedEventIdPrefix = @"failedEventId-";
|
|||
}
|
||||
|
||||
// Set component flags
|
||||
_isStateEvent = (event.eventType != MXEventTypeRoomMessage);
|
||||
_isStateEvent = event.isState;
|
||||
_isIncomingMsg = ([event.userId isEqualToString:mxHandler.userId] == NO);
|
||||
_isRedactedEvent = (event.redactedBecause != nil);
|
||||
|
||||
|
|
|
@ -642,7 +642,11 @@
|
|||
|
||||
// Set background color
|
||||
if (recentRoom.unreadCount) {
|
||||
cell.backgroundColor = [UIColor colorWithRed:1 green:0.9 blue:0.9 alpha:1.0];
|
||||
if (recentRoom.containsBingUnread) {
|
||||
cell.backgroundColor = [UIColor colorWithRed:0.9 green:0.9 blue:1 alpha:1.0];
|
||||
} else {
|
||||
cell.backgroundColor = [UIColor colorWithRed:1 green:0.9 blue:0.9 alpha:1.0];
|
||||
}
|
||||
cell.roomTitle.text = [NSString stringWithFormat:@"%@ (%tu)", cell.roomTitle.text, recentRoom.unreadCount];
|
||||
} else {
|
||||
cell.backgroundColor = [UIColor clearColor];
|
||||
|
|
Loading…
Reference in a new issue