in src/auth/window-flow.ts [42:88]
private async _load(): Promise<string> {
const authRequest = await this._requestBuilder.prepareAuthRequest(
{request_credentials: 'required', auth_mode: 'bypass_to_login'},
{nonRedirect: true},
);
return new Promise((resolve, reject) => {
this.reject = reject;
let cleanRun: boolean;
const cleanUp = () => {
if (cleanRun) {
return;
}
cleanRun = true;
/* eslint-disable no-use-before-define */
removeStateListener();
removeTokenListener();
/* eslint-enable no-use-before-define */
this._loginWindow?.close();
clearTimeout(this._timeoutId);
};
const removeTokenListener = this._storage.onTokenChange(token => {
if (token) {
cleanUp();
resolve(token.accessToken);
}
});
const removeStateListener = this._storage.onStateChange(authRequest.stateId, state => {
if (state && state.error) {
cleanUp();
reject(new AuthResponseParser.AuthError(state));
}
});
if (!this._loginWindow || (this._loginWindow && this._loginWindow.closed)) {
this._loginWindow = this._openWindow(authRequest.url);
} else if (this._loginWindow) {
this._loginWindow.location.href = authRequest.url;
}
this.checkIsClosed();
});
}