UNPKG

matrix-react-sdk

Version:
180 lines (179 loc) 6.22 kB
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 {};