Implement thread filtering logic in RoomDataSource

This commit is contained in:
ismailgulek
2021-11-10 13:38:32 +03:00
parent db84277016
commit 56315641d5
@@ -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