Skip to content

Commit a7b509c

Browse files
turt2liveandybalaam
authored andcommitted
Revert "Remove extensible events v1 experimental rendering (matrix-org#9881)"
This reverts commit 6739602.
1 parent bdf8379 commit a7b509c

File tree

4 files changed

+52
-1
lines changed

4 files changed

+52
-1
lines changed

src/TextForEvent.tsx

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,15 @@ import { logger } from "matrix-js-sdk/src/logger";
2020
import { removeDirectionOverrideChars } from "matrix-js-sdk/src/utils";
2121
import { GuestAccess, HistoryVisibility, JoinRule } from "matrix-js-sdk/src/@types/partials";
2222
import { EventType, MsgType } from "matrix-js-sdk/src/@types/event";
23-
import { M_POLL_START, M_POLL_END, PollStartEvent } from "matrix-events-sdk";
23+
import {
24+
M_EMOTE,
25+
M_NOTICE,
26+
M_MESSAGE,
27+
MessageEvent,
28+
M_POLL_START,
29+
M_POLL_END,
30+
PollStartEvent,
31+
} from "matrix-events-sdk";
2432

2533
import { _t } from "./languageHandler";
2634
import * as Roles from "./Roles";
@@ -339,6 +347,17 @@ function textForMessageEvent(ev: MatrixEvent): () => string | null {
339347
message = textForRedactedPollAndMessageEvent(ev);
340348
}
341349

350+
if (SettingsStore.isEnabled("feature_extensible_events")) {
351+
const extev = ev.unstableExtensibleEvent as MessageEvent;
352+
if (extev) {
353+
if (extev.isEquivalentTo(M_EMOTE)) {
354+
return `* ${senderDisplayName} ${extev.text}`;
355+
} else if (extev.isEquivalentTo(M_NOTICE) || extev.isEquivalentTo(M_MESSAGE)) {
356+
return `${senderDisplayName}: ${extev.text}`;
357+
}
358+
}
359+
}
360+
342361
if (ev.getContent().msgtype === MsgType.Emote) {
343362
message = "* " + senderDisplayName + " " + message;
344363
} else if (ev.getContent().msgtype === MsgType.Image) {

src/components/views/messages/TextualBody.tsx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import React, { createRef, SyntheticEvent, MouseEvent, ReactNode } from "react";
1818
import ReactDOM from "react-dom";
1919
import highlight from "highlight.js";
2020
import { MsgType } from "matrix-js-sdk/src/@types/event";
21+
import { isEventLike, LegacyMsgType, M_MESSAGE, MessageEvent } from "matrix-events-sdk";
2122

2223
import * as HtmlUtils from "../../../HtmlUtils";
2324
import { formatDate } from "../../../DateUtils";
@@ -578,6 +579,29 @@ export default class TextualBody extends React.Component<IBodyProps, IState> {
578579
// only strip reply if this is the original replying event, edits thereafter do not have the fallback
579580
const stripReply = !mxEvent.replacingEvent() && !!getParentEventId(mxEvent);
580581
let body: ReactNode;
582+
if (SettingsStore.isEnabled("feature_extensible_events")) {
583+
const extev = this.props.mxEvent.unstableExtensibleEvent as MessageEvent;
584+
if (extev?.isEquivalentTo(M_MESSAGE)) {
585+
isEmote = isEventLike(extev.wireFormat, LegacyMsgType.Emote);
586+
isNotice = isEventLike(extev.wireFormat, LegacyMsgType.Notice);
587+
body = HtmlUtils.bodyToHtml(
588+
{
589+
body: extev.text,
590+
format: extev.html ? "org.matrix.custom.html" : undefined,
591+
formatted_body: extev.html,
592+
msgtype: MsgType.Text,
593+
},
594+
this.props.highlights,
595+
{
596+
disableBigEmoji: isEmote || !SettingsStore.getValue<boolean>("TextualBody.enableBigEmoji"),
597+
// Part of Replies fallback support
598+
stripReplyFallback: stripReply,
599+
ref: this.contentRef,
600+
returnString: false,
601+
},
602+
);
603+
}
604+
}
581605
if (!body) {
582606
isEmote = content.msgtype === MsgType.Emote;
583607
isNotice = content.msgtype === MsgType.Notice;

src/i18n/strings/en_EN.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -938,6 +938,7 @@
938938
"Show message previews for reactions in DMs": "Show message previews for reactions in DMs",
939939
"Show message previews for reactions in all rooms": "Show message previews for reactions in all rooms",
940940
"Offline encrypted messaging using dehydrated devices": "Offline encrypted messaging using dehydrated devices",
941+
"Show extensible event representation of events": "Show extensible event representation of events",
941942
"Show current avatar and name for users in message history": "Show current avatar and name for users in message history",
942943
"Show HTML representation of room topics": "Show HTML representation of room topics",
943944
"Show info about bridges in room settings": "Show info about bridges in room settings",

src/settings/Settings.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,13 @@ export const SETTINGS: { [setting: string]: ISetting } = {
340340
supportedLevels: LEVELS_FEATURE,
341341
default: false,
342342
},
343+
"feature_extensible_events": {
344+
isFeature: true,
345+
labsGroup: LabGroup.Developer, // developer for now, eventually Messaging and default on
346+
supportedLevels: LEVELS_FEATURE,
347+
displayName: _td("Show extensible event representation of events"),
348+
default: false,
349+
},
343350
"useOnlyCurrentProfiles": {
344351
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
345352
displayName: _td("Show current avatar and name for users in message history"),

0 commit comments

Comments
 (0)