diff --git a/dist/plex-meets-homeassistant.js b/dist/plex-meets-homeassistant.js index f548b57..7422a99 100644 --- a/dist/plex-meets-homeassistant.js +++ b/dist/plex-meets-homeassistant.js @@ -20391,48 +20391,6 @@ class PlexMeetsHomeAssistant extends HTMLElement { if (this.hassObj) { this.entityRegistry = await fetchEntityRegistry(this.hassObj.connection); } - let { entity } = JSON.parse(JSON.stringify(this.config)); - const processEntity = (entityObj, entityString) => { - lodash.forEach(this.entityRegistry, entityInRegister => { - if (lodash.isEqual(entityInRegister.entity_id, entityString)) { - switch (entityInRegister.platform) { - case 'cast': - if (lodash.isNil(entityObj.cast)) { - // eslint-disable-next-line no-param-reassign - entityObj.cast = []; - } - entityObj.cast.push(entityInRegister.entity_id); - break; - case 'androidtv': - if (lodash.isNil(entityObj.androidtv)) { - // eslint-disable-next-line no-param-reassign - entityObj.androidtv = []; - } - entityObj.androidtv.push(entityInRegister.entity_id); - break; - case 'kodi': - if (lodash.isNil(entityObj.kodi)) { - // eslint-disable-next-line no-param-reassign - entityObj.kodi = []; - } - entityObj.kodi.push(entityInRegister.entity_id); - break; - // pass - } - } - }); - }; - const entityOrig = entity; - if (lodash.isString(entityOrig)) { - entity = {}; - processEntity(entity, entityOrig); - } - else if (lodash.isArray(entityOrig)) { - entity = {}; - lodash.forEach(entityOrig, entityStr => { - processEntity(entity, entityStr); - }); - } window.addEventListener('scroll', () => { // todo: improve performance by calculating this when needed only if (this.detailsShown && this.activeMovieElem && !isVideoFullScreen(this)) { @@ -20495,6 +20453,52 @@ class PlexMeetsHomeAssistant extends HTMLElement { if (this.card) { this.previousPageWidth = this.card.offsetWidth; } + this.renderInitialData(); + this.resizeBackground(); + }; + this.renderInitialData = async () => { + let { entity } = JSON.parse(JSON.stringify(this.config)); + const processEntity = (entityObj, entityString) => { + lodash.forEach(this.entityRegistry, entityInRegister => { + if (lodash.isEqual(entityInRegister.entity_id, entityString)) { + switch (entityInRegister.platform) { + case 'cast': + if (lodash.isNil(entityObj.cast)) { + // eslint-disable-next-line no-param-reassign + entityObj.cast = []; + } + entityObj.cast.push(entityInRegister.entity_id); + break; + case 'androidtv': + if (lodash.isNil(entityObj.androidtv)) { + // eslint-disable-next-line no-param-reassign + entityObj.androidtv = []; + } + entityObj.androidtv.push(entityInRegister.entity_id); + break; + case 'kodi': + if (lodash.isNil(entityObj.kodi)) { + // eslint-disable-next-line no-param-reassign + entityObj.kodi = []; + } + entityObj.kodi.push(entityInRegister.entity_id); + break; + // pass + } + } + }); + }; + const entityOrig = entity; + if (lodash.isString(entityOrig)) { + entity = {}; + processEntity(entity, entityOrig); + } + else if (lodash.isArray(entityOrig)) { + entity = {}; + lodash.forEach(entityOrig, entityStr => { + processEntity(entity, entityStr); + }); + } this.loading = true; this.renderPage(); try { @@ -20587,7 +20591,6 @@ class PlexMeetsHomeAssistant extends HTMLElement { this.error = `Plex server did not respond.
Details of the error: ${escapeHtml(err.message)}`; this.renderPage(); } - this.resizeBackground(); }; this.render = () => { this.renderPage(); @@ -21592,6 +21595,7 @@ class PlexMeetsHomeAssistant extends HTMLElement { return playButton; }; this.setConfig = (config) => { + console.log('setConfig from main'); this.plexProtocol = 'http'; if (!config.entity || config.entity.length === 0) { throw new Error('You need to define at least one entity'); @@ -21644,6 +21648,8 @@ class PlexMeetsHomeAssistant extends HTMLElement { this.showExtras = config.showExtras; } this.plex = new Plex(this.config.ip, this.plexPort, this.config.token, this.plexProtocol, this.config.sort); + this.data = {}; + this.renderInitialData(); }; this.getCardSize = () => { return 3; diff --git a/src/plex-meets-homeassistant.ts b/src/plex-meets-homeassistant.ts index b97c3e9..661a026 100644 --- a/src/plex-meets-homeassistant.ts +++ b/src/plex-meets-homeassistant.ts @@ -160,51 +160,6 @@ class PlexMeetsHomeAssistant extends HTMLElement { this.entityRegistry = await fetchEntityRegistry(this.hassObj.connection); } - let { entity } = JSON.parse(JSON.stringify(this.config)); - - const processEntity = (entityObj: Record, entityString: string): void => { - _.forEach(this.entityRegistry, entityInRegister => { - if (_.isEqual(entityInRegister.entity_id, entityString)) { - switch (entityInRegister.platform) { - case 'cast': - if (_.isNil(entityObj.cast)) { - // eslint-disable-next-line no-param-reassign - entityObj.cast = []; - } - entityObj.cast.push(entityInRegister.entity_id); - break; - case 'androidtv': - if (_.isNil(entityObj.androidtv)) { - // eslint-disable-next-line no-param-reassign - entityObj.androidtv = []; - } - entityObj.androidtv.push(entityInRegister.entity_id); - break; - case 'kodi': - if (_.isNil(entityObj.kodi)) { - // eslint-disable-next-line no-param-reassign - entityObj.kodi = []; - } - entityObj.kodi.push(entityInRegister.entity_id); - break; - default: - // pass - } - } - }); - }; - - const entityOrig = entity; - if (_.isString(entityOrig)) { - entity = {}; - processEntity(entity, entityOrig); - } else if (_.isArray(entityOrig)) { - entity = {}; - _.forEach(entityOrig, entityStr => { - processEntity(entity, entityStr); - }); - } - window.addEventListener('scroll', () => { // todo: improve performance by calculating this when needed only if (this.detailsShown && this.activeMovieElem && !isVideoFullScreen(this)) { @@ -269,7 +224,55 @@ class PlexMeetsHomeAssistant extends HTMLElement { if (this.card) { this.previousPageWidth = this.card.offsetWidth; } + this.renderInitialData(); + this.resizeBackground(); + }; + renderInitialData = async (): Promise => { + let { entity } = JSON.parse(JSON.stringify(this.config)); + + const processEntity = (entityObj: Record, entityString: string): void => { + _.forEach(this.entityRegistry, entityInRegister => { + if (_.isEqual(entityInRegister.entity_id, entityString)) { + switch (entityInRegister.platform) { + case 'cast': + if (_.isNil(entityObj.cast)) { + // eslint-disable-next-line no-param-reassign + entityObj.cast = []; + } + entityObj.cast.push(entityInRegister.entity_id); + break; + case 'androidtv': + if (_.isNil(entityObj.androidtv)) { + // eslint-disable-next-line no-param-reassign + entityObj.androidtv = []; + } + entityObj.androidtv.push(entityInRegister.entity_id); + break; + case 'kodi': + if (_.isNil(entityObj.kodi)) { + // eslint-disable-next-line no-param-reassign + entityObj.kodi = []; + } + entityObj.kodi.push(entityInRegister.entity_id); + break; + default: + // pass + } + } + }); + }; + + const entityOrig = entity; + if (_.isString(entityOrig)) { + entity = {}; + processEntity(entity, entityOrig); + } else if (_.isArray(entityOrig)) { + entity = {}; + _.forEach(entityOrig, entityStr => { + processEntity(entity, entityStr); + }); + } this.loading = true; this.renderPage(); try { @@ -366,8 +369,6 @@ class PlexMeetsHomeAssistant extends HTMLElement { this.error = `Plex server did not respond.
Details of the error: ${escapeHtml(err.message)}`; this.renderPage(); } - - this.resizeBackground(); }; render = (): void => { @@ -1489,6 +1490,7 @@ class PlexMeetsHomeAssistant extends HTMLElement { }; setConfig = (config: any): void => { + console.log('setConfig from main'); this.plexProtocol = 'http'; if (!config.entity || config.entity.length === 0) { throw new Error('You need to define at least one entity'); @@ -1541,6 +1543,8 @@ class PlexMeetsHomeAssistant extends HTMLElement { } this.plex = new Plex(this.config.ip, this.plexPort, this.config.token, this.plexProtocol, this.config.sort); + this.data = {}; + this.renderInitialData(); }; getCardSize = (): number => {