diff --git a/src/entrypoints/core.ts b/src/entrypoints/core.ts index 92a535d078ce..1de10ea11f15 100644 --- a/src/entrypoints/core.ts +++ b/src/entrypoints/core.ts @@ -27,7 +27,7 @@ const isExternal = location.search.includes("external_auth=1"); const authProm = isExternal ? () => import(/* webpackChunkName: "external_auth" */ "../external_app/external_auth").then( - (mod) => new mod.default(hassUrl) + ({ createExternalAuth }) => createExternalAuth(hassUrl) ) : () => getAuth({ diff --git a/src/external_app/external_auth.ts b/src/external_app/external_auth.ts index e463f26e6839..e69a252837ae 100644 --- a/src/external_app/external_auth.ts +++ b/src/external_app/external_auth.ts @@ -45,10 +45,10 @@ if (!window.externalApp && !window.webkit) { ); } -export default class ExternalAuth extends Auth { - public external = new ExternalMessaging(); +class ExternalAuth extends Auth { + public external?: ExternalMessaging; - constructor(hassUrl) { + constructor(hassUrl: string) { super({ hassUrl, clientId: "", @@ -58,7 +58,6 @@ export default class ExternalAuth extends Auth { // This will trigger connection to do a refresh right away expires: 0, }); - this.external.attach(); } public async refreshAccessToken() { @@ -100,3 +99,15 @@ export default class ExternalAuth extends Auth { }); } } + +export const createExternalAuth = (hassUrl: string) => { + const auth = new ExternalAuth(hassUrl); + if ( + (window.externalApp && window.externalApp.externalBus) || + (window.webkit && window.webkit.messageHandlers.externalBus) + ) { + auth.external = new ExternalMessaging(); + auth.external.attach(); + } + return auth; +};