Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit 5b0f2e2

Browse files
committed
Cleanup re-dispatching
Signed-off-by: Šimon Brandner <[email protected]>
1 parent b8ca81e commit 5b0f2e2

File tree

5 files changed

+23
-7
lines changed

5 files changed

+23
-7
lines changed

src/components/structures/RoomView.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ import { logger } from "matrix-js-sdk/src/logger";
9494
import { EventTimeline } from 'matrix-js-sdk/src/models/event-timeline';
9595
import { dispatchShowThreadEvent } from '../../dispatcher/dispatch-actions/threads';
9696
import { fetchInitialEvent } from "../../utils/EventUtils";
97+
import { ComposerType } from "../../dispatcher/payloads/ComposerInsertPayload";
9798

9899
const DEBUG = false;
99100
let debuglog = function(msg: string) {};
@@ -864,10 +865,11 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
864865
}
865866

866867
case Action.ComposerInsert: {
868+
if (payload.composerType) break;
867869
// re-dispatch to the correct composer
868870
dis.dispatch({
869871
...payload,
870-
action: this.state.editState ? "edit_composer_insert" : "send_composer_insert",
872+
composerType: this.state.editState ? ComposerType.Edit : ComposerType.Send,
871873
});
872874
break;
873875
}

src/components/views/rooms/EditMessageComposer.tsx

+6-1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ import SettingsStore from "../../../settings/SettingsStore";
4747
import { logger } from "matrix-js-sdk/src/logger";
4848
import { withMatrixClientHOC, MatrixClientProps } from '../../../contexts/MatrixClientContext';
4949
import RoomContext from '../../../contexts/RoomContext';
50+
import { ComposerType } from "../../../dispatcher/payloads/ComposerInsertPayload";
5051

5152
function getHtmlReplyFallback(mxEvent: MatrixEvent): string {
5253
const html = mxEvent.getContent().formatted_body;
@@ -499,7 +500,11 @@ class EditMessageComposer extends React.Component<IEditMessageComposerProps, ISt
499500
};
500501

501502
private onAction = (payload: ActionPayload) => {
502-
if (payload.action === "edit_composer_insert" && this.editorRef.current) {
503+
if (payload.action === Action.ComposerInsert) {
504+
if (!this.editorRef.current) return;
505+
if (payload.timelineRenderingType !== this.context.timelineRenderingType) return;
506+
if (payload.composerType !== ComposerType.Edit) return;
507+
503508
if (payload.userId) {
504509
this.editorRef.current?.insertMention(payload.userId);
505510
} else if (payload.event) {

src/components/views/rooms/EventTile.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -862,6 +862,8 @@ export default class EventTile extends React.Component<IProps, IState> {
862862
dis.dispatch<ComposerInsertPayload>({
863863
action: Action.ComposerInsert,
864864
userId: mxEvent.getSender(),
865+
timelineRenderingType: this.context.timelineRenderingType,
866+
composerType: null,
865867
});
866868
};
867869

@@ -1094,7 +1096,7 @@ export default class EventTile extends React.Component<IProps, IState> {
10941096
}
10951097

10961098
if (needsSenderProfile && this.props.hideSender !== true) {
1097-
if (!this.props.tileShape) {
1099+
if (!this.props.tileShape || this.props.tileShape === TileShape.Thread) {
10981100
sender = <SenderProfile onClick={this.onSenderProfileClick}
10991101
mxEvent={this.props.mxEvent}
11001102
enableFlair={this.props.enableFlair}

src/components/views/rooms/MessageComposer.tsx

+6-3
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,8 @@ export default class MessageComposer extends React.Component<IProps, IState> {
252252
private ref: React.RefObject<HTMLDivElement> = createRef();
253253
private instanceId: number;
254254

255-
public static contextType = RoomContext;
255+
static contextType = RoomContext;
256+
public context!: React.ContextType<typeof RoomContext>;
256257

257258
static defaultProps = {
258259
compact: false,
@@ -398,13 +399,15 @@ export default class MessageComposer extends React.Component<IProps, IState> {
398399
}
399400
};
400401

401-
private addEmoji(emoji: string): boolean {
402+
private addEmoji = (emoji: string): boolean => {
402403
dis.dispatch<ComposerInsertPayload>({
403404
action: Action.ComposerInsert,
404405
text: emoji,
406+
timelineRenderingType: this.context.timelineRenderingType,
407+
composerType: null,
405408
});
406409
return true;
407-
}
410+
};
408411

409412
private sendMessage = async () => {
410413
if (this.state.haveRecording && this.voiceRecordingButton.current) {

src/components/views/rooms/SendMessageComposer.tsx

+5-1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ import { ActionPayload } from "../../../dispatcher/payloads";
5858
import { decorateStartSendingTime, sendRoundTripMetric } from "../../../sendTimePerformanceMetrics";
5959
import RoomContext from '../../../contexts/RoomContext';
6060
import DocumentPosition from "../../../editor/position";
61+
import { ComposerType } from "../../../dispatcher/payloads/ComposerInsertPayload";
6162

6263
function addReplyToMessageContent(
6364
content: IContent,
@@ -591,7 +592,10 @@ export class SendMessageComposer extends React.Component<ISendMessageComposerPro
591592
this.editorRef.current?.focus();
592593
}
593594
break;
594-
case "send_composer_insert":
595+
case Action.ComposerInsert:
596+
if (payload.timelineRenderingType !== this.context.timelineRenderingType) break;
597+
if (payload.composerType !== ComposerType.Send) break;
598+
595599
if (payload.userId) {
596600
this.editorRef.current?.insertMention(payload.userId);
597601
} else if (payload.event) {

0 commit comments

Comments
 (0)