Fix timing issue in external auth (#3587)

* Fix timing issue in external auth

* add await 0
This commit is contained in:
Bram Kragten 2019-09-03 20:32:43 +02:00 committed by GitHub
parent 3b2e02562c
commit f00ad84c16
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -63,6 +63,15 @@ class ExternalAuth extends Auth {
public async refreshAccessToken() {
const callbackPayload = { callback: CALLBACK_SET_TOKEN };
const callbackPromise = new Promise<RefreshTokenResponse>(
(resolve, reject) => {
window[CALLBACK_SET_TOKEN] = (success, data) =>
success ? resolve(data) : reject(data);
}
);
await 0;
if (window.externalApp) {
window.externalApp.getExternalAuth(JSON.stringify(callbackPayload));
} else {
@ -71,12 +80,7 @@ class ExternalAuth extends Auth {
);
}
const tokens = await new Promise<RefreshTokenResponse>(
(resolve, reject) => {
window[CALLBACK_SET_TOKEN] = (success, data) =>
success ? resolve(data) : reject(data);
}
);
const tokens = await callbackPromise;
this.data.access_token = tokens.access_token;
this.data.expires = tokens.expires_in * 1000 + Date.now();
@ -85,6 +89,13 @@ class ExternalAuth extends Auth {
public async revoke() {
const callbackPayload = { callback: CALLBACK_REVOKE_TOKEN };
const callbackPromise = new Promise((resolve, reject) => {
window[CALLBACK_REVOKE_TOKEN] = (success, data) =>
success ? resolve(data) : reject(data);
});
await 0;
if (window.externalApp) {
window.externalApp.revokeExternalAuth(JSON.stringify(callbackPayload));
} else {
@ -93,10 +104,7 @@ class ExternalAuth extends Auth {
);
}
await new Promise((resolve, reject) => {
window[CALLBACK_REVOKE_TOKEN] = (success, data) =>
success ? resolve(data) : reject(data);
});
await callbackPromise;
}
}