mirror of
https://github.com/home-assistant/frontend.git
synced 2025-08-02 05:57:54 +00:00
Fix timing issue in external auth (#3587)
* Fix timing issue in external auth * add await 0
This commit is contained in:
parent
3b2e02562c
commit
f00ad84c16
@ -63,6 +63,15 @@ class ExternalAuth extends Auth {
|
|||||||
public async refreshAccessToken() {
|
public async refreshAccessToken() {
|
||||||
const callbackPayload = { callback: CALLBACK_SET_TOKEN };
|
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) {
|
if (window.externalApp) {
|
||||||
window.externalApp.getExternalAuth(JSON.stringify(callbackPayload));
|
window.externalApp.getExternalAuth(JSON.stringify(callbackPayload));
|
||||||
} else {
|
} else {
|
||||||
@ -71,12 +80,7 @@ class ExternalAuth extends Auth {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const tokens = await new Promise<RefreshTokenResponse>(
|
const tokens = await callbackPromise;
|
||||||
(resolve, reject) => {
|
|
||||||
window[CALLBACK_SET_TOKEN] = (success, data) =>
|
|
||||||
success ? resolve(data) : reject(data);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
this.data.access_token = tokens.access_token;
|
this.data.access_token = tokens.access_token;
|
||||||
this.data.expires = tokens.expires_in * 1000 + Date.now();
|
this.data.expires = tokens.expires_in * 1000 + Date.now();
|
||||||
@ -85,6 +89,13 @@ class ExternalAuth extends Auth {
|
|||||||
public async revoke() {
|
public async revoke() {
|
||||||
const callbackPayload = { callback: CALLBACK_REVOKE_TOKEN };
|
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) {
|
if (window.externalApp) {
|
||||||
window.externalApp.revokeExternalAuth(JSON.stringify(callbackPayload));
|
window.externalApp.revokeExternalAuth(JSON.stringify(callbackPayload));
|
||||||
} else {
|
} else {
|
||||||
@ -93,10 +104,7 @@ class ExternalAuth extends Auth {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
await new Promise((resolve, reject) => {
|
await callbackPromise;
|
||||||
window[CALLBACK_REVOKE_TOKEN] = (success, data) =>
|
|
||||||
success ? resolve(data) : reject(data);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user