Skip to content

Commit

Permalink
Remove remaining reply fallbacks code
Browse files Browse the repository at this point in the history
as MSC2781 has been merged

Signed-off-by: Michael Telatynski <[email protected]>
  • Loading branch information
t3chguy committed Dec 2, 2024
1 parent 4f276c1 commit f365859
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 60 deletions.
33 changes: 2 additions & 31 deletions src/components/views/rooms/EditMessageComposer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,25 +43,6 @@ import { attachMentions, attachRelation } from "./SendMessageComposer";
import { filterBoolean } from "../../../utils/arrays";
import { MatrixClientPeg } from "../../../MatrixClientPeg";

function getHtmlReplyFallback(mxEvent: MatrixEvent): string {
const html = mxEvent.getContent().formatted_body;
if (!html) {
return "";
}
const rootNode = new DOMParser().parseFromString(html, "text/html").body;
const mxReply = rootNode.querySelector("mx-reply");
return (mxReply && mxReply.outerHTML) || "";
}

function getTextReplyFallback(mxEvent: MatrixEvent): string {
const body: string = mxEvent.getContent().body;
const lines = body.split("\n").map((l) => l.trim());
if (lines.length > 2 && lines[0].startsWith("> ") && lines[1].length === 0) {
return `${lines[0]}\n\n`;
}
return "";
}

// exported for tests
export function createEditContent(
model: EditorModel,
Expand All @@ -72,15 +53,6 @@ export function createEditContent(
if (isEmote) {
model = stripEmoteCommand(model);
}
const isReply = !!editedEvent.replyEventId;
let plainPrefix = "";
let htmlPrefix = "";

if (isReply) {
plainPrefix = getTextReplyFallback(editedEvent);
htmlPrefix = getHtmlReplyFallback(editedEvent);
}

const body = textSerialize(model);

const newContent: RoomMessageEventContent = {
Expand All @@ -89,19 +61,18 @@ export function createEditContent(
};
const contentBody: RoomMessageTextEventContent & Omit<ReplacementEvent<RoomMessageEventContent>, "m.relates_to"> = {
"msgtype": newContent.msgtype,
"body": `${plainPrefix} * ${body}`,
"body": `* ${body}`,
"m.new_content": newContent,
};

const formattedBody = htmlSerializeIfNeeded(model, {
forceHTML: isReply,
useMarkdown: SettingsStore.getValue("MessageComposerInput.useMarkdown"),
});
if (formattedBody) {
newContent.format = "org.matrix.custom.html";
newContent.formatted_body = formattedBody;
contentBody.format = newContent.format;
contentBody.formatted_body = `${htmlPrefix} * ${formattedBody}`;
contentBody.formatted_body = `* ${formattedBody}`;
}

// Build the mentions properties for both the content and new_content.
Expand Down
1 change: 0 additions & 1 deletion src/components/views/rooms/SendMessageComposer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,6 @@ export function createMessageContent(
body: body,
};
const formattedBody = htmlSerializeIfNeeded(model, {
forceHTML: !!replyToEvent,
useMarkdown: SettingsStore.getValue("MessageComposerInput.useMarkdown"),
});
if (formattedBody) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,28 +27,6 @@ function attachRelation(content: IContent, relation?: IEventRelation): void {
}
}

function getHtmlReplyFallback(mxEvent: MatrixEvent): string {
const html = mxEvent.getContent().formatted_body;
if (!html) {
return "";
}
const rootNode = new DOMParser().parseFromString(html, "text/html").body;
const mxReply = rootNode.querySelector("mx-reply");
return (mxReply && mxReply.outerHTML) || "";
}

function getTextReplyFallback(mxEvent: MatrixEvent): string {
const body = mxEvent.getContent().body;
if (typeof body !== "string") {
return "";
}
const lines = body.split("\n").map((l) => l.trim());
if (lines.length > 2 && lines[0].startsWith("> ") && lines[1].length === 0) {
return `${lines[0]}\n\n`;
}
return "";
}

interface CreateMessageContentParams {
relation?: IEventRelation;
replyToEvent?: MatrixEvent;
Expand All @@ -63,8 +41,6 @@ export async function createMessageContent(
{ relation, replyToEvent, editedEvent }: CreateMessageContentParams,
): Promise<RoomMessageEventContent> {
const isEditing = isMatrixEvent(editedEvent);
const isReply = isEditing ? Boolean(editedEvent.replyEventId) : isMatrixEvent(replyToEvent);
const isReplyAndEditing = isEditing && isReply;

const isEmote = message.startsWith(EMOTE_PREFIX);
if (isEmote) {
Expand All @@ -82,12 +58,10 @@ export async function createMessageContent(
// if we're editing rich text, the message content is pure html
// BUT if we're not, the message content will be plain text where we need to convert the mentions
const body = isHTML ? await richToPlain(message, false) : convertPlainTextToBody(message);
const bodyPrefix = (isReplyAndEditing && getTextReplyFallback(editedEvent)) || "";
const formattedBodyPrefix = (isReplyAndEditing && getHtmlReplyFallback(editedEvent)) || "";

const content = {
msgtype: isEmote ? MsgType.Emote : MsgType.Text,
body: isEditing ? `${bodyPrefix} * ${body}` : body,
body: isEditing ? `* ${body}` : body,
} as RoomMessageTextEventContent & ReplacementEvent<RoomMessageTextEventContent>;

// TODO markdown support
Expand All @@ -97,7 +71,7 @@ export async function createMessageContent(

if (formattedBody) {
content.format = "org.matrix.custom.html";
content.formatted_body = isEditing ? `${formattedBodyPrefix} * ${formattedBody}` : formattedBody;
content.formatted_body = isEditing ? `* ${formattedBody}` : formattedBody;
}

if (isEditing) {
Expand Down

0 comments on commit f365859

Please sign in to comment.