diff --git a/Riot/Modules/Room/CellData/RoomBubbleCellData.m b/Riot/Modules/Room/CellData/RoomBubbleCellData.m index 20f399bd8..f9f4ac2bb 100644 --- a/Riot/Modules/Room/CellData/RoomBubbleCellData.m +++ b/Riot/Modules/Room/CellData/RoomBubbleCellData.m @@ -396,14 +396,16 @@ NSString *const URLPreviewDidUpdateNotification = @"URLPreviewDidUpdateNotificat break; // bwi #5575 ACL events and membership events should be displayed (and could be filtered later) // this does not work at the moment but i'll leave it commented out for later reevaluation -// case RoomBubbleCellDataTagACL: -// case RoomBubbleCellDataTagRoomCreateConfiguration: -// if (!self.collapsedAttributedTextMessage) { -// hasNoDisplay = NO; -// } else { -// hasNoDisplay = [super hasNoDisplay]; -// } -// break; + // case RoomBubbleCellDataTagACL: + // hasNoDisplay = NO; + // break; + // case RoomBubbleCellDataTagRoomCreateConfiguration: + // if (!self.collapsedAttributedTextMessage) { + // hasNoDisplay = NO; + // } else { + // hasNoDisplay = [super hasNoDisplay]; + // } + // break; default: hasNoDisplay = [super hasNoDisplay]; break; diff --git a/Riot/Utils/EventFormatter.m b/Riot/Utils/EventFormatter.m index d88fd5468..551e7e797 100644 --- a/Riot/Utils/EventFormatter.m +++ b/Riot/Utils/EventFormatter.m @@ -413,6 +413,9 @@ static NSString *const kEventFormatterTimeFormat = @"HH:mm"; MXEvent *roomCreateEvent = [events filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"type == %@", kMXEventTypeStringRoomCreate]].firstObject; MXEvent *callInviteEvent = [events filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"type == %@", kMXEventTypeStringCallInvite]].firstObject; + MXEvent *aclEvent = [events filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"type == %@", kMXEventTypeStringRoomServerACL]].firstObject; + MXEvent *roomMemberEvent = [events filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"type == %@", kMXEventTypeStringRoomMember]].firstObject; + MXEvent *joinRuleEvent = [events filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"type == %@", kMXEventTypeStringRoomJoinRules]].firstObject; if (roomCreateEvent) { @@ -448,7 +451,7 @@ static NSString *const kEventFormatterTimeFormat = @"HH:mm"; // TODO: Build a complete summary like Riot-web // bwi #5575 correct texts for collapsed acl events - else if (events[0].eventType == MXEventTypeRoomMember || events[0].eventType == MXEventTypeRoomServerACL) + else if (aclEvent || roomMemberEvent || joinRuleEvent) { CollapsedACLEvents eventsType = [[FederationEventHelper shared] isCollapsedACLEventsWithEvents:events]; switch (eventsType) { @@ -463,6 +466,7 @@ static NSString *const kEventFormatterTimeFormat = @"HH:mm"; break; default: displayText = [VectorL10n eventFormatterMemberUpdates:events.count]; + break; } } } diff --git a/bwi/Federation/FederationEventHelper.swift b/bwi/Federation/FederationEventHelper.swift index d566b19c1..174282445 100644 --- a/bwi/Federation/FederationEventHelper.swift +++ b/bwi/Federation/FederationEventHelper.swift @@ -58,22 +58,21 @@ import Foundation } @objc func isCollapsedACLEvents( events: [MXEvent]) -> CollapsedACLEvents { - var aclEventCount = 0, memberEventCount = 0 - //events[0].eventType == MXEventTypeRoomMember || events[0].eventType == MXEventTypeRoomServerACL + var aclEventCount = 0, otherEventCount = 0 for event in events { - if event.eventType == .roomMember { - memberEventCount += 1 - } else if event.eventType == .roomServerACL { + if event.eventType != .roomServerACL { + otherEventCount += 1 + } else { aclEventCount += 1 } } - if aclEventCount > 0 && memberEventCount == 0 { + if aclEventCount > 0 && otherEventCount == 0 { return .all - } else if aclEventCount > 0 && memberEventCount > 0 { - return .mixed - } else { + } else if otherEventCount > 0 && aclEventCount == 0 { return .none + } else { + return .mixed } } }