Add Module Composer API (#33284)
* Spec composer API * Add composer api implementation * Tests * Copyright * update sigs * cleanup * a snap * cleanup * linting * Tidy up * Adjust
This commit is contained in:
@@ -1293,23 +1293,30 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
|
||||
}
|
||||
|
||||
case Action.ComposerInsert: {
|
||||
if (payload.composerType) break;
|
||||
const composerInsertPayload = payload as ComposerInsertPayload;
|
||||
if (composerInsertPayload.composerType) break;
|
||||
|
||||
let timelineRenderingType: TimelineRenderingType = payload.timelineRenderingType;
|
||||
let timelineRenderingType: TimelineRenderingType | undefined;
|
||||
// ThreadView handles Action.ComposerInsert itself due to it having its own editState
|
||||
if (timelineRenderingType === TimelineRenderingType.Thread) break;
|
||||
if (composerInsertPayload.timelineRenderingType === TimelineRenderingType.Thread) break;
|
||||
if (
|
||||
this.state.timelineRenderingType === TimelineRenderingType.Search &&
|
||||
payload.timelineRenderingType === TimelineRenderingType.Search
|
||||
composerInsertPayload.timelineRenderingType === TimelineRenderingType.Search
|
||||
) {
|
||||
// we don't have the composer rendered in this state, so bring it back first
|
||||
await this.onCancelSearchClick();
|
||||
timelineRenderingType = TimelineRenderingType.Room;
|
||||
}
|
||||
|
||||
// If the dispatchee didn't request a timeline rendering type, use the current one.
|
||||
timelineRenderingType =
|
||||
timelineRenderingType ??
|
||||
composerInsertPayload.timelineRenderingType ??
|
||||
this.state.timelineRenderingType;
|
||||
|
||||
// re-dispatch to the correct composer
|
||||
defaultDispatcher.dispatch<ComposerInsertPayload>({
|
||||
...(payload as ComposerInsertPayload),
|
||||
...composerInsertPayload,
|
||||
timelineRenderingType,
|
||||
composerType: this.state.editState ? ComposerType.Edit : ComposerType.Send,
|
||||
});
|
||||
|
||||
@@ -167,12 +167,14 @@ export default class ThreadView extends React.Component<IProps, IState> {
|
||||
}
|
||||
switch (payload.action) {
|
||||
case Action.ComposerInsert: {
|
||||
if (payload.composerType) break;
|
||||
if (payload.timelineRenderingType !== TimelineRenderingType.Thread) break;
|
||||
const insertPayload = payload as ComposerInsertPayload;
|
||||
if (insertPayload.composerType) break;
|
||||
if (insertPayload.timelineRenderingType !== TimelineRenderingType.Thread) break;
|
||||
|
||||
// re-dispatch to the correct composer
|
||||
dis.dispatch<ComposerInsertPayload>({
|
||||
...(payload as ComposerInsertPayload),
|
||||
...insertPayload,
|
||||
timelineRenderingType: TimelineRenderingType.Thread,
|
||||
composerType: this.state.editState ? ComposerType.Edit : ComposerType.Send,
|
||||
});
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user