iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
2 lines • 2.93 kB
JavaScript
;(self.webpackChunkhome_assistant_frontend=self.webpackChunkhome_assistant_frontend||[]).push([["82437"],{15508:function(e,s,t){t.r(s),t.d(s,{ExternalAuth:()=>r,createExternalAuth:()=>d});t(52247),t(77439),t(40251);var n=t(63813);class a{constructor(){this.config=void 0,this.commands={},this.msgId=0,this._commandHandler=void 0}async attach(){window.externalBus=e=>this.receiveMessage(e),window.addEventListener("connection-status",(e=>this.fireMessage({type:"connection-status",payload:{event:e.detail}}))),this.config=await this.sendMessage({type:"config/get"})}addCommandHandler(e){this._commandHandler=e}sendMessage(e){const s=++this.msgId;return e.id=s,this._sendExternal(e),new Promise(((e,t)=>{this.commands[s]={resolve:e,reject:t}}))}fireMessage(e){e.id||(e.id=++this.msgId),this._sendExternal(e)}receiveMessage(e){if("command"===e.type){if(!this._commandHandler||!this._commandHandler(e)){let s,t;this._commandHandler?(s="not_ready",t="Command handler not ready"):(s="unknown_command",t=`Unknown command ${e.command}`),console.warn(t,e),this.fireMessage({id:e.id,type:"result",success:!1,error:{code:s,message:t}})}return}const s=this.commands[e.id];s?"result"===e.type&&(e.success?s.resolve(e.result):s.reject(e.error)):console.warn("Received unknown msg ID",e.id)}_sendExternal(e){window.externalApp?window.externalApp.externalBus(JSON.stringify(e)):window.webkit.messageHandlers.externalBus.postMessage(e)}}const i="externalAuthSetToken",o="externalAuthRevokeToken";if(!window.externalApp&&!window.webkit)throw new Error("External auth requires either externalApp or webkit defined on Window object.");class r extends n.gx{constructor(e){super({hassUrl:e,clientId:"",refresh_token:"",access_token:"",expires_in:0,expires:0}),this.external=void 0,this._tokenCallbackPromise=void 0}async refreshAccessToken(e){if(this._tokenCallbackPromise&&!e)try{return void(await this._tokenCallbackPromise)}catch(n){this._tokenCallbackPromise=void 0}const s={callback:i};e&&(s.force=!0),this._tokenCallbackPromise=new Promise(((e,s)=>{window[i]=(t,n)=>t?e(n):s(n)})),await Promise.resolve(),window.externalApp?window.externalApp.getExternalAuth(JSON.stringify(s)):window.webkit.messageHandlers.getExternalAuth.postMessage(s);const t=await this._tokenCallbackPromise;this.data.access_token=t.access_token,this.data.expires=1e3*t.expires_in+Date.now(),this._tokenCallbackPromise=void 0}async revoke(){const e={callback:o},s=new Promise(((e,s)=>{window[o]=(t,n)=>t?e(n):s(n)}));await Promise.resolve(),window.externalApp?window.externalApp.revokeExternalAuth(JSON.stringify(e)):window.webkit.messageHandlers.revokeExternalAuth.postMessage(e),await s}}const d=async e=>{var s;const t=new r(e);return(null!==(s=window.externalApp)&&void 0!==s&&s.externalBus||window.webkit&&window.webkit.messageHandlers.externalBus)&&(t.external=new a,await t.external.attach()),t}}}]);
//# sourceMappingURL=82437.0f221555305d89b2.js.map