Skip to content

Commit 969ef05

Browse files
committed
Construct formatted body from replied event
1 parent 64d9824 commit 969ef05

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

Riot/Modules/MatrixKit/Utils/EventFormatter/MXKEventFormatter.m

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1762,7 +1762,32 @@ - (NSAttributedString*)renderHTMLString:(NSString*)htmlString forEvent:(MXEvent*
17621762
// Note: `isEditMode` fixes an issue where editing a reply would display an "In reply to" span instead of a mention.
17631763
if (!isEditMode && (event.isReplyEvent || (!RiotSettings.shared.enableThreads && event.isInThread)))
17641764
{
1765-
html = [self renderReplyTo:html withRoomState:roomState];
1765+
MXEvent *repliedEvent = [self->mxSession.store eventWithEventId:event.relatesTo.inReplyTo.eventId inRoom:roomState.roomId];
1766+
if (repliedEvent)
1767+
{
1768+
NSString *repliedEventContent;
1769+
NSString *eventContent;
1770+
MXJSONModelSetString(repliedEventContent, repliedEvent.content[kMXMessageBodyKey]);
1771+
1772+
if (event.content[kMXMessageContentKeyNewContent])
1773+
{
1774+
MXJSONModelSetString(eventContent, event.content[kMXMessageContentKeyNewContent][@"formatted_body"]);
1775+
if (!eventContent)
1776+
{
1777+
MXJSONModelSetString(eventContent, event.content[kMXMessageContentKeyNewContent][kMXMessageBodyKey]);
1778+
}
1779+
html = [NSString stringWithFormat:@"<mx-reply><blockquote><a href=\"%@\">In reply to</a> <a href=\"%@\">%@</a><br>%@</blockquote></mx-reply>%@",
1780+
[MXTools permalinkToEvent:repliedEvent.eventId inRoom:repliedEvent.roomId],
1781+
[MXTools permalinkToUserWithUserId:repliedEvent.sender],
1782+
repliedEvent.sender,
1783+
repliedEventContent,
1784+
eventContent];
1785+
}
1786+
}
1787+
else
1788+
{
1789+
html = [self renderReplyTo:html withRoomState:roomState];
1790+
}
17661791
}
17671792

17681793
// Apply the css style that corresponds to the event state

Riot/Modules/Room/DataSources/RoomDataSource.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,11 @@ extension RoomDataSource {
158158
let parser = MXReplyEventParser()
159159
let replyEventParts = parser.parse(event)
160160

161-
let body: String = replyEventParts?.formattedBodyParts?.replyText ?? replyEventParts?.bodyParts.replyText ?? ""
161+
let body: String = (event.content[kMXMessageContentKeyNewContent] as? [String: Any])?["formatted_body"] as? String
162+
?? (event.content[kMXMessageContentKeyNewContent] as? [String: Any])?[kMXMessageBodyKey] as? String
163+
?? replyEventParts?.formattedBodyParts?.replyText
164+
?? replyEventParts?.bodyParts.replyText
165+
?? ""
162166
let attributed = eventFormatter.renderHTMLString(body, for: event, with: self.roomState, isEditMode: true)
163167
if let attributed = attributed, #available(iOS 15.0, *) {
164168
editableTextMessage = PillsFormatter.insertPills(in: attributed,

0 commit comments

Comments
 (0)