matrix-react-sdk
Version:
SDK for matrix.org using React
180 lines (179 loc) • 6.22 kB
TypeScript
import React from 'react';
import { MatrixEvent } from "matrix-js-sdk/src/models/event";
import 'focus-visible';
import 'what-input';
import { IMatrixClientCreds } from "../../MatrixClientPeg";
import '../../stores/LifecycleStore';
import PageTypes from '../../PageTypes';
import { IOpts } from "../../createRoom";
import ResizeNotifier from "../../utils/ResizeNotifier";
import { ValidatedServerConfig } from "../../utils/AutoDiscoveryUtils";
import { IDeferred } from "../../utils/promise";
import { IThreepidInvite } from "../../stores/ThreepidInviteStore";
/** constants for MatrixChat.state.view */
export declare enum Views {
LOADING = 0,
WELCOME = 1,
LOGIN = 2,
REGISTER = 3,
FORGOT_PASSWORD = 4,
COMPLETE_SECURITY = 5,
E2E_SETUP = 6,
LOGGED_IN = 7,
SOFT_LOGOUT = 8
}
interface IScreen {
screen: string;
params?: object;
}
interface IProps {
config: Record<string, any>;
serverConfig?: ValidatedServerConfig;
onNewScreen: (screen: string, replaceLast: boolean) => void;
enableGuest?: boolean;
realQueryParams?: Record<string, string>;
startingFragmentQueryParams?: Record<string, string>;
onTokenLoginCompleted?: () => void;
initialScreenAfterLogin?: IScreen;
defaultDeviceDisplayName?: string;
makeRegistrationUrl: (object: any) => string;
}
interface IState {
view: Views;
page_type?: PageTypes;
currentRoomId?: string;
currentGroupId?: string;
currentGroupIsNew?: boolean;
currentUserId?: string;
collapseLhs: boolean;
register_client_secret?: string;
register_session_id?: string;
register_id_sid?: string;
hideToSRUsers: boolean;
syncError?: Error;
resizeNotifier: ResizeNotifier;
serverConfig?: ValidatedServerConfig;
ready: boolean;
threepidInvite?: IThreepidInvite;
roomOobData?: object;
pendingInitialSync?: boolean;
justRegistered?: boolean;
roomJustCreatedOpts?: IOpts;
}
export default class MatrixChat extends React.PureComponent<IProps, IState> {
static displayName: string;
static defaultProps: {
realQueryParams: {};
startingFragmentQueryParams: {};
config: {};
onTokenLoginCompleted: () => void;
};
firstSyncComplete: boolean;
firstSyncPromise: IDeferred<void>;
private screenAfterLogin?;
private windowWidth;
private pageChanging;
private tokenLogin?;
private accountPassword?;
private accountPasswordTimer?;
private focusComposer;
private subTitleStatus;
private readonly loggedInView;
private readonly dispatcherRef;
private readonly themeWatcher;
private readonly fontWatcher;
constructor(props: any, context: any);
private postLoginSetup;
UNSAFE_componentWillUpdate(props: any, state: any): void;
componentDidUpdate(prevProps: any, prevState: any): void;
componentWillUnmount(): void;
getFallbackHsUrl(): any;
getServerProperties(): {
serverConfig: ValidatedServerConfig;
};
private loadSession;
startPageChangeTimer(): void;
stopPageChangeTimer(): number;
shouldTrackPageChange(prevState: IState, state: IState): boolean;
setStateForNewView(state: Partial<IState>): void;
onAction: (payload: any) => void;
private setPage;
private startRegistration;
private viewRoom;
private viewGroup;
private viewSomethingBehindModal;
private viewWelcome;
private viewLogin;
private viewHome;
private viewUser;
private createRoom;
private chatCreateOrReuse;
private leaveRoomWarnings;
private leaveRoom;
private forgetRoom;
/**
* Starts a chat with the welcome user, if the user doesn't already have one
* @returns {string} The room ID of the new room, or null if no room was created
*/
private startWelcomeUserChat;
/**
* Called when a new logged in session has started
*/
private onLoggedIn;
private showScreenAfterLogin;
private viewLastRoom;
/**
* Called when the session is logged out
*/
private onLoggedOut;
/**
* Called when the session is softly logged out
*/
private onSoftLogout;
/**
* Called just before the matrix client is started
* (useful for setting listeners)
*/
private onWillStartClient;
/**
* Called shortly after the matrix client has started. Useful for
* setting up anything that requires the client to be started.
* @private
*/
private onClientStarted;
showScreen(screen: string, params?: {
[key: string]: any;
}): void;
notifyNewScreen(screen: string, replaceLast?: boolean): void;
onAliasClick(event: MouseEvent, alias: string): void;
onUserClick(event: MouseEvent, userId: string): void;
onGroupClick(event: MouseEvent, groupId: string): void;
onLogoutClick(event: React.MouseEvent<HTMLAnchorElement, MouseEvent>): void;
handleResize: () => void;
private dispatchTimelineResize;
onRoomCreated(roomId: string): void;
onRegisterClick: () => void;
onLoginClick: () => void;
onForgotPasswordClick: () => void;
onRegisterFlowComplete: (credentials: IMatrixClientCreds, password: string) => Promise<void>;
onRegistered(credentials: IMatrixClientCreds): Promise<any>;
onSendEvent(roomId: string, event: MatrixEvent): void;
private setPageSubtitle;
updateStatusIndicator(state: string, prevState: string): void;
onCloseAllSettings(): void;
onServerConfigChange: (serverConfig: ValidatedServerConfig) => void;
private makeRegistrationUrl;
/**
* After registration or login, we run various post-auth steps before entering the app
* proper, such setting up cross-signing or verifying the new session.
*
* Note: SSO users (and any others using token login) currently do not pass through
* this, as they instead jump straight into the app after `attemptTokenLogin`.
*/
onUserCompletedLoginFlow: (credentials: IMatrixClientCreds, password: string) => Promise<void>;
onCompleteSecurityE2eSetupFinished: () => void;
getFragmentAfterLogin(): string;
render(): JSX.Element;
}
export declare function isLoggedIn(): boolean;
export {};