matrix-react-sdk
Version:
SDK for matrix.org using React
194 lines (193 loc) • 5.92 kB
TypeScript
import React from 'react';
import { Room } from "matrix-js-sdk/src/models/room";
import { MatrixEvent } from "matrix-js-sdk/src/models/event";
import ResizeNotifier from '../../utils/ResizeNotifier';
import { Layout } from "../../settings/Layout";
import { E2EStatus } from '../../utils/ShieldUtils';
import { IMatrixClientCreds } from "../../MatrixClientPeg";
import { XOR } from "../../@types/common";
import { IThreepidInvite } from "../../stores/ThreepidInviteStore";
import { CallState } from "matrix-js-sdk/src/webrtc/call";
import { IOpts } from "../../createRoom";
interface IProps {
threepidInvite: IThreepidInvite;
oobData?: {
name?: string;
avatarUrl?: string;
inviterName?: string;
};
resizeNotifier: ResizeNotifier;
justCreatedOpts?: IOpts;
onRegistered?(credentials: IMatrixClientCreds): void;
}
export interface IState {
room?: Room;
roomId?: string;
roomAlias?: string;
roomLoading: boolean;
peekLoading: boolean;
shouldPeek: boolean;
membersLoaded: boolean;
initialEventId?: string;
initialEventPixelOffset?: number;
isInitialEventHighlighted?: boolean;
replyToEvent?: MatrixEvent;
forwardingEvent?: MatrixEvent;
numUnreadMessages: number;
draggingFile: boolean;
searching: boolean;
searchTerm?: string;
searchScope?: "All" | "Room";
searchResults?: XOR<{}, {
count: number;
highlights: string[];
results: MatrixEvent[];
next_batch: string;
}>;
searchHighlights?: string[];
searchInProgress?: boolean;
callState?: CallState;
guestsCanJoin: boolean;
canPeek: boolean;
showApps: boolean;
isPeeking: boolean;
showingPinned: boolean;
showReadReceipts: boolean;
showRightPanel: boolean;
roomLoadError?: Error;
joining: boolean;
atEndOfLiveTimeline: boolean;
atEndOfLiveTimelineInit: boolean;
showTopUnreadMessagesBar: boolean;
auxPanelMaxHeight?: number;
statusBarVisible: boolean;
upgradeRecommendation?: {
version: string;
needsUpgrade: boolean;
urgent: boolean;
};
canReact: boolean;
canReply: boolean;
layout: Layout;
matrixClientIsReady: boolean;
showUrlPreview?: boolean;
e2eStatus?: E2EStatus;
rejecting?: boolean;
rejectError?: Error;
hasPinnedWidgets?: boolean;
dragCounter: number;
wasContextSwitch?: boolean;
}
export default class RoomView extends React.Component<IProps, IState> {
private readonly dispatcherRef;
private readonly roomStoreToken;
private readonly rightPanelStoreToken;
private readonly showReadReceiptsWatchRef;
private readonly layoutWatcherRef;
private unmounted;
private permalinkCreators;
private searchId;
private roomView;
private searchResultsPanel;
private messagePanel;
static contextType: React.Context<any>;
constructor(props: any, context: any);
private onWidgetStoreUpdate;
private checkWidgets;
private onReadReceiptsChange;
private onRoomViewStoreUpdate;
private getRoomId;
private getPermalinkCreatorForRoom;
private stopAllPermalinkCreators;
private onWidgetEchoStoreUpdate;
private onWidgetLayoutChange;
private setupRoom;
private shouldShowApps;
componentDidMount(): void;
shouldComponentUpdate(nextProps: any, nextState: any): boolean;
componentDidUpdate(): void;
componentWillUnmount(): void;
private onLayoutChange;
private onRightPanelStoreUpdate;
private onPageUnload;
private onReactKeyDown;
private onAction;
private onRoomTimeline;
private onEventDecrypted;
private onEvent;
private handleEffects;
private onRoomName;
private onKeyBackupStatus;
canResetTimeline: () => any;
private onRoomLoaded;
private calculateRecommendedVersion;
private loadMembersIfJoined;
private calculatePeekRules;
private updatePreviewUrlVisibility;
private onRoom;
private onDeviceVerificationChanged;
private onUserVerificationChanged;
private onCrossSigningKeysChanged;
private updateE2EStatus;
private updateTint;
private onAccountData;
private onRoomAccountData;
private onRoomStateEvents;
private onRoomStateMember;
private onMyMembership;
private updatePermissions;
private updateRoomMembers;
private checkDesktopNotifications;
private updateDMState;
private onSearchResultsFillRequest;
private onInviteButtonClick;
private onJoinButtonClicked;
private onMessageListScroll;
private onDragEnter;
private onDragLeave;
private onDragOver;
private onDrop;
private injectSticker;
private onSearch;
private handleSearchResult;
private getSearchResultTiles;
private onPinnedClick;
private onCallPlaced;
private onSettingsClick;
private onCancelClick;
private onAppsClick;
private onLeaveClick;
private onForgetClick;
private onRejectButtonClicked;
private onRejectAndIgnoreClick;
private onRejectThreepidInviteButtonClicked;
private onSearchClick;
private onCancelSearchClick;
private jumpToLiveTimeline;
private jumpToReadMarker;
private forgetReadMarker;
private updateTopUnreadMessagesBar;
private getScrollState;
private onResize;
private onFullscreenClick;
private onMuteAudioClick;
private onMuteVideoClick;
private onStatusBarVisible;
private onStatusBarHidden;
/**
* called by the parent component when PageUp/Down/etc is pressed.
*
* We pass it down to the scroll panel.
*/
private handleScrollKey;
/**
* get any current call for this room
*/
private getCallForRoom;
private gatherTimelinePanelRef;
private getOldRoom;
getHiddenHighlightCount(): any;
onHiddenHighlightsClick: () => void;
render(): JSX.Element;
}
export {};