diff --git a/dist/plex-meets-homeassistant.js b/dist/plex-meets-homeassistant.js index 95d7511..13fa570 100644 --- a/dist/plex-meets-homeassistant.js +++ b/dist/plex-meets-homeassistant.js @@ -21088,15 +21088,21 @@ class PlexMeetsHomeAssistant extends HTMLElement { this.detailElem.style.transition = '0s'; this.detailElem.style.top = `${top - 1000}px`; clearInterval(this.showDetailsTimeout); - this.showDetailsTimeout = setTimeout(() => { - if (this.detailElem) { + // eslint-disable-next-line @typescript-eslint/no-misused-promises + this.showDetailsTimeout = setTimeout(async () => { + if (this.detailElem && this.plex) { this.detailElem.style.visibility = 'visible'; this.detailElem.style.transition = '0.7s'; this.detailElem.style.top = `${top}px`; + let mainData = data; + if (lodash.isEqual(data.type, 'season')) { + mainData = await this.plex.getDetails(data.parentKey.split('/')[3]); + mainData.title = `${mainData.title} - ${data.title}`; + } const directorElem = this.getElementsByClassName('metaInfoDetailsData')[0]; if (directorElem.parentElement) { - if (data.Director && data.Director.length > 0) { - directorElem.innerHTML = escapeHtml(data.Director[0].tag); + if (mainData.Director && mainData.Director.length > 0) { + directorElem.innerHTML = escapeHtml(mainData.Director[0].tag); directorElem.parentElement.style.display = 'table-row'; } else { @@ -21105,8 +21111,8 @@ class PlexMeetsHomeAssistant extends HTMLElement { } const writerElem = this.getElementsByClassName('metaInfoDetailsData')[1]; if (writerElem.parentElement) { - if (data.Writer && data.Writer.length > 0) { - writerElem.innerHTML = escapeHtml(data.Writer[0].tag); + if (mainData.Writer && mainData.Writer.length > 0) { + writerElem.innerHTML = escapeHtml(mainData.Writer[0].tag); writerElem.parentElement.style.display = 'table-row'; } else { @@ -21115,8 +21121,8 @@ class PlexMeetsHomeAssistant extends HTMLElement { } const studioElem = this.getElementsByClassName('metaInfoDetailsData')[2]; if (studioElem.parentElement) { - if (data.studio) { - studioElem.innerHTML = escapeHtml(data.studio); + if (mainData.studio) { + studioElem.innerHTML = escapeHtml(mainData.studio); studioElem.parentElement.style.display = 'table-row'; } else { @@ -21125,9 +21131,9 @@ class PlexMeetsHomeAssistant extends HTMLElement { } const genreElem = this.getElementsByClassName('metaInfoDetailsData')[3]; if (genreElem.parentElement) { - if (data.Genre && data.Genre.length > 0) { + if (mainData.Genre && mainData.Genre.length > 0) { let genre = ''; - lodash.forEach(data.Genre, tag => { + lodash.forEach(mainData.Genre, tag => { genre += `${tag.tag}, `; }); genreElem.innerHTML = escapeHtml(genre.slice(0, -2)); @@ -21137,18 +21143,18 @@ class PlexMeetsHomeAssistant extends HTMLElement { genreElem.parentElement.style.display = 'none'; } } - this.getElementsByClassName('detailsTitle')[0].innerHTML = escapeHtml(data.title); - this.getElementsByClassName('detailsYear')[0].innerHTML = escapeHtml(data.year); - this.getElementsByClassName('metaInfo')[0].innerHTML = `${(data.duration !== undefined - ? `${Math.round(parseInt(escapeHtml(data.duration), 10) / 60 / 1000)} min` + this.getElementsByClassName('detailsTitle')[0].innerHTML = escapeHtml(mainData.title); + this.getElementsByClassName('detailsYear')[0].innerHTML = escapeHtml(mainData.year); + this.getElementsByClassName('metaInfo')[0].innerHTML = `${(mainData.duration !== undefined + ? `${Math.round(parseInt(escapeHtml(mainData.duration), 10) / 60 / 1000)} min` : '') + - (data.contentRating !== undefined - ? `${escapeHtml(data.contentRating)}` + (mainData.contentRating !== undefined + ? `${escapeHtml(mainData.contentRating)}` : '') + - (data.rating !== undefined - ? ` ` + (mainData.rating !== undefined + ? ` ` : '')}
`; - this.getElementsByClassName('detailDesc')[0].innerHTML = escapeHtml(data.summary); + this.getElementsByClassName('detailDesc')[0].innerHTML = escapeHtml(mainData.summary); /* todo temp disabled if (data.type === 'movie') { (this.detailElem.children[5] as HTMLElement).style.visibility = 'visible'; diff --git a/src/plex-meets-homeassistant.ts b/src/plex-meets-homeassistant.ts index d6d98e9..75db1e5 100644 --- a/src/plex-meets-homeassistant.ts +++ b/src/plex-meets-homeassistant.ts @@ -871,16 +871,22 @@ class PlexMeetsHomeAssistant extends HTMLElement { this.detailElem.style.transition = '0s'; this.detailElem.style.top = `${top - 1000}px`; clearInterval(this.showDetailsTimeout); - this.showDetailsTimeout = setTimeout(() => { - if (this.detailElem) { + // eslint-disable-next-line @typescript-eslint/no-misused-promises + this.showDetailsTimeout = setTimeout(async () => { + if (this.detailElem && this.plex) { this.detailElem.style.visibility = 'visible'; this.detailElem.style.transition = '0.7s'; this.detailElem.style.top = `${top}px`; + let mainData = data; + if (_.isEqual(data.type, 'season')) { + mainData = await this.plex.getDetails(data.parentKey.split('/')[3]); + mainData.title = `${mainData.title} - ${data.title}`; + } const directorElem = this.getElementsByClassName('metaInfoDetailsData')[0] as HTMLElement; if (directorElem.parentElement) { - if (data.Director && data.Director.length > 0) { - directorElem.innerHTML = escapeHtml(data.Director[0].tag); + if (mainData.Director && mainData.Director.length > 0) { + directorElem.innerHTML = escapeHtml(mainData.Director[0].tag); directorElem.parentElement.style.display = 'table-row'; } else { directorElem.parentElement.style.display = 'none'; @@ -889,8 +895,8 @@ class PlexMeetsHomeAssistant extends HTMLElement { const writerElem = this.getElementsByClassName('metaInfoDetailsData')[1] as HTMLElement; if (writerElem.parentElement) { - if (data.Writer && data.Writer.length > 0) { - writerElem.innerHTML = escapeHtml(data.Writer[0].tag); + if (mainData.Writer && mainData.Writer.length > 0) { + writerElem.innerHTML = escapeHtml(mainData.Writer[0].tag); writerElem.parentElement.style.display = 'table-row'; } else { writerElem.parentElement.style.display = 'none'; @@ -898,8 +904,8 @@ class PlexMeetsHomeAssistant extends HTMLElement { } const studioElem = this.getElementsByClassName('metaInfoDetailsData')[2] as HTMLElement; if (studioElem.parentElement) { - if (data.studio) { - studioElem.innerHTML = escapeHtml(data.studio); + if (mainData.studio) { + studioElem.innerHTML = escapeHtml(mainData.studio); studioElem.parentElement.style.display = 'table-row'; } else { studioElem.parentElement.style.display = 'none'; @@ -907,9 +913,9 @@ class PlexMeetsHomeAssistant extends HTMLElement { } const genreElem = this.getElementsByClassName('metaInfoDetailsData')[3] as HTMLElement; if (genreElem.parentElement) { - if (data.Genre && data.Genre.length > 0) { + if (mainData.Genre && mainData.Genre.length > 0) { let genre = ''; - _.forEach(data.Genre, tag => { + _.forEach(mainData.Genre, tag => { genre += `${tag.tag}, `; }); genreElem.innerHTML = escapeHtml(genre.slice(0, -2)); @@ -918,22 +924,22 @@ class PlexMeetsHomeAssistant extends HTMLElement { genreElem.parentElement.style.display = 'none'; } } - (this.getElementsByClassName('detailsTitle')[0] as HTMLElement).innerHTML = escapeHtml(data.title); - (this.getElementsByClassName('detailsYear')[0] as HTMLElement).innerHTML = escapeHtml(data.year); - (this.getElementsByClassName('metaInfo')[0] as HTMLElement).innerHTML = `${(data.duration !== undefined + (this.getElementsByClassName('detailsTitle')[0] as HTMLElement).innerHTML = escapeHtml(mainData.title); + (this.getElementsByClassName('detailsYear')[0] as HTMLElement).innerHTML = escapeHtml(mainData.year); + (this.getElementsByClassName('metaInfo')[0] as HTMLElement).innerHTML = `${(mainData.duration !== undefined ? `${Math.round( - parseInt(escapeHtml(data.duration), 10) / 60 / 1000 + parseInt(escapeHtml(mainData.duration), 10) / 60 / 1000 )} min` : '') + - (data.contentRating !== undefined - ? `${escapeHtml(data.contentRating)}` + (mainData.contentRating !== undefined + ? `${escapeHtml(mainData.contentRating)}` : '') + - (data.rating !== undefined - ? `