matrix-react-sdk
Version:
SDK for matrix.org using React
60 lines (59 loc) • 1.99 kB
TypeScript
import React from "react";
import { Thread, Room, MatrixEvent } from "matrix-js-sdk/src/matrix";
import ResizeNotifier from "../../utils/ResizeNotifier";
import { RoomPermalinkCreator } from "../../utils/permalinks/Permalinks";
import { Layout } from "../../settings/enums/Layout";
import { E2EStatus } from "../../utils/ShieldUtils";
import EditorStateTransfer from "../../utils/EditorStateTransfer";
import RoomContext from "../../contexts/RoomContext";
interface IProps {
room: Room;
onClose: () => void;
resizeNotifier: ResizeNotifier;
mxEvent: MatrixEvent;
permalinkCreator?: RoomPermalinkCreator;
e2eStatus?: E2EStatus;
initialEvent?: MatrixEvent;
isInitialEventHighlighted?: boolean;
initialEventScrollIntoView?: boolean;
}
interface IState {
thread?: Thread;
lastReply?: MatrixEvent | null;
layout: Layout;
editState?: EditorStateTransfer;
replyToEvent?: MatrixEvent;
narrow: boolean;
}
export default class ThreadView extends React.Component<IProps, IState> {
static contextType: React.Context<import("./RoomView").IRoomState & {
threadId?: string;
}>;
context: React.ContextType<typeof RoomContext>;
private dispatcherRef;
private readonly layoutWatcherRef;
private timelinePanel;
private card;
private eventId;
constructor(props: IProps, context: React.ContextType<typeof RoomContext>);
componentDidMount(): void;
componentWillUnmount(): void;
componentDidUpdate(prevProps: IProps): void;
private setEventId;
private onAction;
private setupThread;
private onNewThread;
private updateThreadRelation;
private get threadLastReply();
private updateThread;
private postThreadUpdate;
private setupThreadListeners;
private resetJumpToEvent;
private onMeasurement;
private onKeyDown;
private onFileDrop;
private get threadRelation();
private renderThreadViewHeader;
render(): React.ReactNode;
}
export {};