@twilio/flex-ui
Version:
Twilio Flex UI
79 lines (78 loc) • 3.42 kB
TypeScript
import { Action, Dispatch } from "redux";
import { WorkerLogoutPayload } from "../actions/WorkerActions";
import { InsightsServiceStatus } from "../core/Insights/InsightsService.definitions";
import { OAuthLoginHandler } from "../core/OAuthLoginHandler";
import { SSOLoginHandler } from "../core/SSOLoginHandler";
import { SSOTokenPayload } from "../core/TokenStorage";
import { SupportedVDI } from "../vdi/citrix/VDIRecognition";
import type { Config } from "./AppConfig";
import { SingleSessionGuardState } from "./SessionState.definitions";
/**
* Login states
* @enum {"UNKNOWN" | "LOGGING_IN" | "LOGGED_IN" | "LOGGED_OUT" | "ERROR"} LoginState
* @property {"UNKNOWN"} Unknown Unknown
* @property {"LOGGING_IN"} LoggingIn LoggingIn
* @property {"LOGGED_IN"} LoggedIn LoggedIn
* @property {"LOGGED_OUT"} LoggedOut LoggedOut
* @property {"ERROR"} Error Error
* @memberof AppState
*/
export declare enum LoginState {
Unknown = "UNKNOWN",
LoggingIn = "LOGGING_IN",
LoggedIn = "LOGGED_IN",
LoggedOut = "LOGGED_OUT",
Error = "ERROR"
}
export declare const INSIGHTS_INIT_TIMEOUT = 90000;
/**
* Active session state
* @interface SessionState
* @property {string} [identity] identity of a logged-in user
* @property {any} [loginError] last error that occurred when logging in
* @property {LoginState} [loginState] current state of the session
* @property {SSOTokenPayload} [ssoTokenPayload] SSO token payload
* @property {boolean} [degraded] Indicates if session is degraded
* @category State
*/
export interface SessionState {
readonly identity: string;
readonly insightsServiceStatus: InsightsServiceStatus;
readonly goodDataServiceStatus: InsightsServiceStatus;
readonly loginHandler?: SSOLoginHandler | OAuthLoginHandler;
readonly loginError: any;
readonly loginState: LoginState;
readonly ssoTokenPayload: SSOTokenPayload;
readonly singleSessionGuard: SingleSessionGuardState;
readonly degraded?: boolean;
readonly vdiSupported?: SupportedVDI;
}
export declare const initialState: SessionState;
interface SessionStateAction extends Action {
readonly payload?: any;
}
export declare const ACTION_LOGGED_OUT = "FLEX_ACTION_LOGGED_OUT";
export declare function reduce(state: SessionState, action: SessionStateAction): SessionState;
export declare class Actions {
private static _dispatcher;
private static _updatingClientsToken;
static get dispatcher(): Dispatch<any>;
static set dispatcher(dispatcher: Dispatch<any>);
static init(): void;
static invalidateCurrentSession: (otherSessionCookieId: string) => void;
static invalidateOtherSessions: () => void;
static validateCurrentSession: () => void;
static updateDegradedMode: () => void;
static alertForMultiSession: (otherSessionSid: string, hasOngoingCall: boolean) => void;
static ssoLogin(config?: Config): Promise<void>;
static validateSession(): Promise<void>;
static updateInsightsServiceStatus(status: InsightsServiceStatus): void;
static updateGoodDataServiceStatus(status: InsightsServiceStatus): void;
static updateSupportedVDI(vdi: SupportedVDI): void;
static handleTokenUpdated: (tokenPayload: SSOTokenPayload) => Promise<void>;
static handleTokenExpired(): void;
private static initClients;
static logout(logoutPayload: WorkerLogoutPayload): Promise<void>;
private static shutdown;
}
export {};