mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-20 00:24:43 +02:00
Implement thread filtering logic in RoomDataSource
This commit is contained in:
@@ -239,6 +239,52 @@ const CGFloat kTypingCellHeight = 24;
|
||||
[self enableRoomCreationIntroCellDisplayIfNeeded];
|
||||
}
|
||||
|
||||
- (BOOL)shouldQueueEventForProcessing:(MXEvent *)event roomState:(MXRoomState *)roomState direction:(MXTimelineDirection)direction
|
||||
{
|
||||
if (self.threadId)
|
||||
{
|
||||
// if in a thread, ignore non-root event or events from other threads
|
||||
if (![event.eventId isEqualToString:self.threadId] && ![event.threadIdentifier isEqualToString:self.threadId])
|
||||
{
|
||||
// Ignore the event
|
||||
return NO;
|
||||
}
|
||||
// also ignore events related to un-threaded or events from other threads
|
||||
if (!event.isInThread && event.relatesTo.eventId)
|
||||
{
|
||||
MXEvent *relatedEvent = [self.mxSession.store eventWithEventId:event.relatesTo.eventId
|
||||
inRoom:event.roomId];
|
||||
if (![relatedEvent.threadIdentifier isEqualToString:self.threadId])
|
||||
{
|
||||
// ignore the event
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// if not in a thread, ignore all threaded events
|
||||
if (event.threadIdentifier)
|
||||
{
|
||||
// ignore the event
|
||||
return NO;
|
||||
}
|
||||
// also ignore events related to threaded events
|
||||
if (event.relatesTo.eventId)
|
||||
{
|
||||
MXEvent *relatedEvent = [self.mxSession.store eventWithEventId:event.relatesTo.eventId
|
||||
inRoom:event.roomId];
|
||||
if (relatedEvent.threadIdentifier)
|
||||
{
|
||||
// ignore the event
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return [super shouldQueueEventForProcessing:event roomState:roomState direction:direction];
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
|
||||
|
||||
Reference in New Issue
Block a user