diff --git a/src/components/views/dialogs/ForwardDialog.tsx b/src/components/views/dialogs/ForwardDialog.tsx index a831acc5d1..08de387706 100644 --- a/src/components/views/dialogs/ForwardDialog.tsx +++ b/src/components/views/dialogs/ForwardDialog.tsx @@ -237,7 +237,8 @@ const ForwardDialog: React.FC = ({ matrixClient: cli, event, permalinkCr room_id: event.getRoomId(), origin_server_ts: event.getTs(), }); - mockEvent.sender = { + // @ts-ignore - private field access + mockEvent._sender = { name: profileInfo.displayname || userId, rawDisplayName: profileInfo.displayname, userId, diff --git a/src/components/views/elements/EventTilePreview.tsx b/src/components/views/elements/EventTilePreview.tsx index dc276858bd..fd30dfe0ea 100644 --- a/src/components/views/elements/EventTilePreview.tsx +++ b/src/components/views/elements/EventTilePreview.tsx @@ -89,7 +89,8 @@ export default class EventTilePreview extends React.Component { /* eslint-enable quote-props */ // Fake it more - event.sender = { + // @ts-ignore - private field access + event._sender = { name: this.props.displayName || this.props.userId, rawDisplayName: this.props.displayName, userId: this.props.userId, diff --git a/src/hooks/usePinnedEvents.ts b/src/hooks/usePinnedEvents.ts index bdda4a7701..b065edc83f 100644 --- a/src/hooks/usePinnedEvents.ts +++ b/src/hooks/usePinnedEvents.ts @@ -154,7 +154,7 @@ async function fetchPinnedEvent(room: Room, pinnedEventId: string, cli: MatrixCl const senderUserId = event.getSender(); if (senderUserId && PinningUtils.isUnpinnable(event)) { // Inject sender information - event.sender = room.getMember(senderUserId); + event.setMetadata(room.currentState, false); // Also inject any edits we've found if (edit) event.makeReplaced(edit); diff --git a/src/indexing/EventIndex.ts b/src/indexing/EventIndex.ts index 7a126b2ffb..18a2f9d26a 100644 --- a/src/indexing/EventIndex.ts +++ b/src/indexing/EventIndex.ts @@ -761,7 +761,8 @@ export default class EventIndex extends EventEmitter { // We set this manually to avoid emitting RoomMember.membership and // RoomMember.name events. member.events.member = memberEvent; - matrixEvent.sender = member; + // @ts-ignore - private field access + matrixEvent._sender = member; return matrixEvent; }); diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 3852443d1e..0c549038b4 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -110,12 +110,7 @@ export default abstract class Exporter { } protected setEventMetadata(event: MatrixEvent): MatrixEvent { - const roomState = this.room.currentState; - const sender = event.getSender(); - event.sender = (!!sender && roomState?.getSentinelMember(sender)) || null; - if (event.getType() === "m.room.member") { - event.target = roomState?.getSentinelMember(event.getStateKey()!) ?? null; - } + event.setMetadata(this.room.currentState, false); return event; } diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 9bd88dbd45..bc153639bb 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -350,7 +350,8 @@ export default class HTMLExporter extends Exporter { } const modifiedEvent = new MatrixEvent(); modifiedEvent.event = mxEv.event; - modifiedEvent.sender = mxEv.sender; + // @ts-ignore - private field access + modifiedEvent._sender = mxEv.sender; modifiedEvent.event.type = "m.room.message"; modifiedEvent.event.content = modifiedContent; return modifiedEvent; diff --git a/test/test-utils/test-utils.ts b/test/test-utils/test-utils.ts index 1c78ec024c..e0e3f63088 100644 --- a/test/test-utils/test-utils.ts +++ b/test/test-utils/test-utils.ts @@ -405,7 +405,8 @@ export function mkEvent(opts: MakeEventProps): MatrixEvent { const mxEvent = opts.event ? new MatrixEvent(event) : (event as unknown as MatrixEvent); if (!mxEvent.sender && opts.user && opts.room) { - mxEvent.sender = { + // @ts-ignore - private field access + mxEvent._sender = { userId: opts.user, membership: KnownMembership.Join, name: opts.user, @@ -470,7 +471,8 @@ export function mkMembership( } const e = mkEvent(event); if (opts.target) { - e.target = opts.target; + // @ts-ignore - private field access + e._target = opts.target; } return e; } diff --git a/test/unit-tests/TextForEvent-test.ts b/test/unit-tests/TextForEvent-test.ts index 4dfccbb93e..4dbf9badf7 100644 --- a/test/unit-tests/TextForEvent-test.ts +++ b/test/unit-tests/TextForEvent-test.ts @@ -179,7 +179,8 @@ describe("TextForEvent", () => { }, }, }); - mxEvent.sender = { name: userA.name } as RoomMember; + // @ts-ignore - private field access + mxEvent._sender = { name: userA.name } as RoomMember; return mxEvent; }; diff --git a/test/unit-tests/stores/room-list/previews/ReactionEventPreview-test.ts b/test/unit-tests/stores/room-list/previews/ReactionEventPreview-test.ts index 8e01460abf..31ecdf1e4f 100644 --- a/test/unit-tests/stores/room-list/previews/ReactionEventPreview-test.ts +++ b/test/unit-tests/stores/room-list/previews/ReactionEventPreview-test.ts @@ -122,8 +122,9 @@ describe("ReactionEventPreview", () => { type: "m.reaction", room: roomId, }); - event.sender = new RoomMember(roomId, userId); - event.sender.name = "Bob"; + // @ts-ignore - private field access + event._sender = new RoomMember(roomId, userId); + event.sender!.name = "Bob"; expect(preview.getTextFor(event)).toMatchInlineSnapshot(`"Bob reacted 🪿 to duck duck goose"`); });