diff --git a/MatrixSDK/Data/MXRoom.m b/MatrixSDK/Data/MXRoom.m index f08bff4482..d12e8e97af 100644 --- a/MatrixSDK/Data/MXRoom.m +++ b/MatrixSDK/Data/MXRoom.m @@ -2158,45 +2158,32 @@ - (void)getReplyContentBodiesWithEventToReply:(MXEvent*)eventToReply replyContentFormattedBody:(NSString**)replyContentFormattedBody stringLocalizer:(id)stringLocalizer { - if (eventToReply.eventType == MXEventTypePollStart) - { - NSString *question = [MXEventContentPollStart modelFromJSON:eventToReply.content].question; - - *replyContentBody = [self replyMessageBodyFromSender:eventToReply.sender - senderMessageBody:question - isSenderMessageAnEmote:NO - isSenderMessageAReplyTo:eventToReply.isReplyEvent - replyMessage:textMessage]; - - // As formatted body is mandatory for a reply message, use non formatted to build it - NSString *finalFormattedTextMessage = formattedTextMessage ?: textMessage; - - *replyContentFormattedBody = [self replyMessageFormattedBodyFromEventToReply:eventToReply - senderMessageFormattedBody:question - isSenderMessageAnEmote:NO - replyFormattedMessage:finalFormattedTextMessage - stringLocalizer:stringLocalizer]; - return; - } - NSString *msgtype; MXJSONModelSetString(msgtype, eventToReply.content[kMXMessageTypeKey]); - if (!msgtype) - { - return; - } - BOOL eventToReplyIsAlreadyAReply = eventToReply.isReplyEvent; BOOL isSenderMessageAnEmote = [msgtype isEqualToString:kMXMessageTypeEmote]; NSString *senderMessageBody; NSString *senderMessageFormattedBody; - if (eventToReply.location) + if (eventToReply.eventType == MXEventTypePollStart) + { + NSString *question = [MXEventContentPollStart modelFromJSON:eventToReply.content].question; + + senderMessageBody = question; + } + else if (eventToReply.eventType == MXEventTypeBeaconInfo) + { + senderMessageBody = stringLocalizer.senderSentTheirLiveLocation; + } + else if (eventToReply.location) { senderMessageBody = stringLocalizer.senderSentTheirLocation; - senderMessageFormattedBody = senderMessageBody; + } + else if (eventToReply.eventType == MXEventTypeBeaconInfo) + { + senderMessageBody = stringLocalizer.senderSentTheirLiveLocation; } else if ([msgtype isEqualToString:kMXMessageTypeText] || [msgtype isEqualToString:kMXMessageTypeNotice] @@ -2217,27 +2204,22 @@ - (void)getReplyContentBodiesWithEventToReply:(MXEvent*)eventToReply else if ([msgtype isEqualToString:kMXMessageTypeImage]) { senderMessageBody = stringLocalizer.senderSentAnImage; - senderMessageFormattedBody = senderMessageBody; } else if ([msgtype isEqualToString:kMXMessageTypeVideo]) { senderMessageBody = stringLocalizer.senderSentAVideo; - senderMessageFormattedBody = senderMessageBody; } else if (eventToReply.isVoiceMessage) { senderMessageBody = stringLocalizer.senderSentAVoiceMessage; - senderMessageFormattedBody = senderMessageBody; } else if ([msgtype isEqualToString:kMXMessageTypeAudio]) { senderMessageBody = stringLocalizer.senderSentAnAudioFile; - senderMessageFormattedBody = senderMessageBody; } else if ([msgtype isEqualToString:kMXMessageTypeFile]) { senderMessageBody = stringLocalizer.senderSentAFile; - senderMessageFormattedBody = senderMessageBody; } else { @@ -2245,6 +2227,12 @@ - (void)getReplyContentBodiesWithEventToReply:(MXEvent*)eventToReply MXLogDebug(@"[MXRoom] Reply to message type %@ is not supported", msgtype); } + if (!senderMessageFormattedBody) + { + // As formatted body is mandatory for a reply message, if no formatted body has been defined use non formatted body + senderMessageFormattedBody = senderMessageBody; + } + if (senderMessageBody && senderMessageFormattedBody) { *replyContentBody = [self replyMessageBodyFromSender:eventToReply.sender @@ -2435,6 +2423,11 @@ - (BOOL)canReplyToEvent:(MXEvent *)eventToReply return YES; } + if(eventToReply.eventType == MXEventTypeBeaconInfo) + { + return YES; + } + if (eventToReply.eventType != MXEventTypeRoomMessage) { return NO; diff --git a/MatrixSDK/Data/MXSendReplyEventDefaultStringLocalizer.m b/MatrixSDK/Data/MXSendReplyEventDefaultStringLocalizer.m index 5612c541ba..572103bd91 100644 --- a/MatrixSDK/Data/MXSendReplyEventDefaultStringLocalizer.m +++ b/MatrixSDK/Data/MXSendReplyEventDefaultStringLocalizer.m @@ -24,6 +24,7 @@ @interface MXSendReplyEventDefaultStringLocalizer () @property (nonatomic, strong) NSString *senderSentAVoiceMessage; @property (nonatomic, strong) NSString *senderSentAFile; @property (nonatomic, strong) NSString *senderSentTheirLocation; +@property (nonatomic, strong) NSString *senderSentTheirLiveLocation; @property (nonatomic, strong) NSString *messageToReplyToPrefix; @end @@ -40,6 +41,7 @@ - (instancetype)init _senderSentAVoiceMessage = @"sent a voice message."; _senderSentAFile = @"sent a file."; _senderSentTheirLocation = @"has shared their location."; + _senderSentTheirLiveLocation = @"Live location."; _messageToReplyToPrefix = @"In reply to"; } return self; diff --git a/MatrixSDK/Data/MXSendReplyEventStringLocalizerProtocol.h b/MatrixSDK/Data/MXSendReplyEventStringLocalizerProtocol.h index a7e5a7bfbc..b28cdbd5b0 100644 --- a/MatrixSDK/Data/MXSendReplyEventStringLocalizerProtocol.h +++ b/MatrixSDK/Data/MXSendReplyEventStringLocalizerProtocol.h @@ -30,6 +30,7 @@ NS_ASSUME_NONNULL_BEGIN - (NSString *)senderSentAVoiceMessage; - (NSString *)senderSentAFile; - (NSString *)senderSentTheirLocation; +- (NSString *)senderSentTheirLiveLocation; - (NSString *)messageToReplyToPrefix; @end diff --git a/changelog.d/6423.change b/changelog.d/6423.change new file mode 100644 index 0000000000..6eee3a67a2 --- /dev/null +++ b/changelog.d/6423.change @@ -0,0 +1 @@ +MXRoom: Support reply to beacon info event.