import { Module } from '@ringcentral-integration/commons/lib/di'; import { loginStatus } from '@ringcentral-integration/commons/modules/Auth'; import type { UIProps, UIFunctions } from '@ringcentral-integration/core'; import { RcUIModuleV2 } from '@ringcentral-integration/core'; import type { Deps, LoginContainerProps, LoginUIPanelProps, } from './LoginUI.interface'; @Module({ name: 'LoginUI', deps: [ 'Auth', 'ConnectivityMonitor', 'Locale', 'OAuth', 'RateLimiter', { dep: 'LoginUIOptions', optional: true }, ], }) export class LoginUI extends RcUIModuleV2 { constructor(deps: T) { super({ deps, }); } getUIProps(props: LoginContainerProps): UIProps { return { currentLocale: this._deps.locale.currentLocale, disabled: !this._deps.oAuth.oAuthReady || this._deps.rateLimiter.throttling || !this._deps.connectivityMonitor.connectivity, showSpinner: !this._deps.auth.ready || this._deps.auth.loginStatus === loginStatus.loggingIn || this._deps.auth.loginStatus === loginStatus.loggingOut || this._deps.auth.loginStatus === loginStatus.beforeLogout || this._deps.auth.loginStatus === loginStatus.loggedIn, }; } getUIFunctions(): UIFunctions { return { onLoginButtonClick: () => { this._deps.oAuth.openOAuthPage(); }, }; } }