Pass room to ThreadView over roomId

This commit is contained in:
Germain Souquet 2021-08-23 17:31:23 +01:00
parent ef51a46d24
commit 34da07f1f9
4 changed files with 16 additions and 8 deletions

View file

@ -315,7 +315,7 @@ export default class RightPanel extends React.Component<IProps, IState> {
case RightPanelPhases.ThreadView: case RightPanelPhases.ThreadView:
panel = <ThreadView panel = <ThreadView
roomId={roomId} room={this.props.room}
resizeNotifier={this.props.resizeNotifier} resizeNotifier={this.props.resizeNotifier}
onClose={this.onClose} onClose={this.onClose}
mxEvent={this.state.event} mxEvent={this.state.event}

View file

@ -17,6 +17,7 @@ limitations under the License.
import React from 'react'; import React from 'react';
import { MatrixEvent, Room } from 'matrix-js-sdk/src'; import { MatrixEvent, Room } from 'matrix-js-sdk/src';
import { Thread } from 'matrix-js-sdk/src/models/thread';
import BaseCard from "../views/right_panel/BaseCard"; import BaseCard from "../views/right_panel/BaseCard";
import { RightPanelPhases } from "../../stores/RightPanelStorePhases"; import { RightPanelPhases } from "../../stores/RightPanelStorePhases";
@ -25,7 +26,6 @@ import { MatrixClientPeg } from '../../MatrixClientPeg';
import ResizeNotifier from '../../utils/ResizeNotifier'; import ResizeNotifier from '../../utils/ResizeNotifier';
import EventTile from '../views/rooms/EventTile'; import EventTile from '../views/rooms/EventTile';
import { Thread } from '../../../../matrix-js-sdk/src/models/thread';
interface IProps { interface IProps {
roomId: string; roomId: string;

View file

@ -16,7 +16,8 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import { MatrixEvent } from 'matrix-js-sdk/src'; import { MatrixEvent, Room } from 'matrix-js-sdk/src';
import { Thread } from 'matrix-js-sdk/src/models/thread';
import BaseCard from "../views/right_panel/BaseCard"; import BaseCard from "../views/right_panel/BaseCard";
import { RightPanelPhases } from "../../stores/RightPanelStorePhases"; import { RightPanelPhases } from "../../stores/RightPanelStorePhases";
@ -29,12 +30,13 @@ import MessageComposer from '../views/rooms/MessageComposer';
import { RoomPermalinkCreator } from '../../utils/permalinks/Permalinks'; import { RoomPermalinkCreator } from '../../utils/permalinks/Permalinks';
import { Layout } from '../../settings/Layout'; import { Layout } from '../../settings/Layout';
import TimelinePanel from './TimelinePanel'; import TimelinePanel from './TimelinePanel';
import { Thread } from '../../../../matrix-js-sdk/src/models/thread';
import dis from "../../dispatcher/dispatcher"; import dis from "../../dispatcher/dispatcher";
import { ActionPayload } from '../../dispatcher/payloads'; import { ActionPayload } from '../../dispatcher/payloads';
import { SetRightPanelPhasePayload } from '../../dispatcher/payloads/SetRightPanelPhasePayload';
import { Action } from '../../dispatcher/actions';
interface IProps { interface IProps {
roomId: string; room: Room;
onClose: () => void; onClose: () => void;
resizeNotifier: ResizeNotifier; resizeNotifier: ResizeNotifier;
mxEvent: MatrixEvent; mxEvent: MatrixEvent;
@ -73,6 +75,13 @@ class ThreadView extends React.Component<IProps, IState> {
this.teardownThread(); this.teardownThread();
this.setupThread(this.props.mxEvent); this.setupThread(this.props.mxEvent);
} }
if (prevProps.room !== this.props.room) {
dis.dispatch<SetRightPanelPhasePayload>({
action: Action.SetRightPanelPhase,
phase: RightPanelPhases.RoomSummary,
});
}
} }
private onAction = (payload: ActionPayload): void => { private onAction = (payload: ActionPayload): void => {
@ -120,7 +129,6 @@ class ThreadView extends React.Component<IProps, IState> {
} }
public render() { public render() {
const room = MatrixClientPeg.get().getRoom(this.props.roomId);
return ( return (
<BaseCard <BaseCard
className="mx_ThreadView" className="mx_ThreadView"
@ -142,7 +150,7 @@ class ThreadView extends React.Component<IProps, IState> {
/> />
) } ) }
<MessageComposer <MessageComposer
room={room} room={this.props.room}
resizeNotifier={this.props.resizeNotifier} resizeNotifier={this.props.resizeNotifier}
replyToEvent={this.state?.thread?.replyToEvent} replyToEvent={this.state?.thread?.replyToEvent}
showReplyPreview={false} showReplyPreview={false}

View file

@ -21,6 +21,7 @@ import { EventType } from "matrix-js-sdk/src/@types/event";
import { EventStatus, MatrixEvent } from "matrix-js-sdk/src/models/event"; import { EventStatus, MatrixEvent } from "matrix-js-sdk/src/models/event";
import { Relations } from "matrix-js-sdk/src/models/relations"; import { Relations } from "matrix-js-sdk/src/models/relations";
import { RoomMember } from "matrix-js-sdk/src/models/room-member"; import { RoomMember } from "matrix-js-sdk/src/models/room-member";
import { Thread } from 'matrix-js-sdk/src/models/thread';
import ReplyThread from "../elements/ReplyThread"; import ReplyThread from "../elements/ReplyThread";
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
@ -56,7 +57,6 @@ import MessageActionBar from "../messages/MessageActionBar";
import ReactionsRow from '../messages/ReactionsRow'; import ReactionsRow from '../messages/ReactionsRow';
import { getEventDisplayInfo } from '../../../utils/EventUtils'; import { getEventDisplayInfo } from '../../../utils/EventUtils';
import { RightPanelPhases } from "../../../stores/RightPanelStorePhases"; import { RightPanelPhases } from "../../../stores/RightPanelStorePhases";
import { Thread } from '../../../../../matrix-js-sdk/src/models/thread';
import SettingsStore from "../../../settings/SettingsStore"; import SettingsStore from "../../../settings/SettingsStore";
const eventTileTypes = { const eventTileTypes = {