vector-im/element-ios/issues/5114 - Polls in the timeline.

This commit is contained in:
Stefan Ceriu
2021-11-19 17:40:52 +02:00
parent ce93abb03e
commit 17f2f71634
47 changed files with 1717 additions and 223 deletions

View File

@@ -36,6 +36,11 @@ static NSAttributedString *messageSeparator = nil;
- (BOOL)addEvent:(MXEvent*)event andRoomState:(MXRoomState*)roomState
{
// Never merge polls
if (self.events.firstObject.eventType == MXEventTypePollStart) {
return NO;
}
// We group together text messages from the same user (attachments are not merged).
if ([event.sender isEqualToString:self.senderId] && (self.attachment == nil) && (self.bubbleComponents.count < self.maxComponentCount))
{
@@ -85,6 +90,11 @@ static NSAttributedString *messageSeparator = nil;
- (BOOL)mergeWithBubbleCellData:(id<MXKRoomBubbleCellDataStoring>)bubbleCellData
{
// Never merge polls
if (self.events.firstObject.eventType == MXEventTypePollStart) {
return NO;
}
if ([self hasSameSenderAsBubbleCellData:bubbleCellData])
{
MXKRoomBubbleCellData *cellData = (MXKRoomBubbleCellData*)bubbleCellData;

View File

@@ -2697,11 +2697,27 @@ typedef NS_ENUM (NSUInteger, MXKRoomDataSourceError) {
- (BOOL)canPerformActionOnEvent:(MXEvent*)event
{
BOOL isSent = event.sentState == MXEventSentStateSent;
BOOL isRoomMessage = event.eventType == MXEventTypeRoomMessage;
if (!isSent) {
return NO;
}
if (event.eventType == MXEventTypePollStart) {
return YES;
}
BOOL isRoomMessage = (event.eventType == MXEventTypeRoomMessage);
if (!isRoomMessage) {
return NO;
}
NSString *messageType = event.content[@"msgtype"];
if (messageType == nil || [messageType isEqualToString:@"m.bad.encrypted"]) {
return NO;
}
return isSent && isRoomMessage && messageType && ![messageType isEqualToString:@"m.bad.encrypted"];
return YES;
}
- (void)setState:(MXKDataSourceState)newState