From 0d039677124c27f2949802c75e8a73300e066cc6 Mon Sep 17 00:00:00 2001 From: Troels Ugilt Jensen <6103205+tuj@users.noreply.github.com> Date: Thu, 6 Jul 2023 07:59:43 +0200 Subject: [PATCH 1/2] SUPPORT-1119: Only slides with a loaded template should be rendered --- src/data-sync/pull-strategy.js | 34 +++++++++++++++++++++++++++++----- src/region.js | 5 ++++- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/data-sync/pull-strategy.js b/src/data-sync/pull-strategy.js index 08bc7258..27610ec1 100644 --- a/src/data-sync/pull-strategy.js +++ b/src/data-sync/pull-strategy.js @@ -1,6 +1,6 @@ import cloneDeep from 'lodash.clonedeep'; import isPublished from '../util/isPublished'; -import * as Logger from '../logger/logger'; +import Logger from '../logger/logger'; import localStorageKeys from '../local-storage-keys'; /** @@ -61,7 +61,8 @@ class PullStrategy { }); } catch (err) { Logger.log('error', `Failed to fetch: ${this.endpoint + path}`); - throw err; + + return null; } if (response.ok === false) { @@ -261,6 +262,11 @@ class PullStrategy { try { screen = await this.getPath(screenPath); } catch (err) { + Logger.log( + 'warn', + `Screen (${screenPath}) not loaded. Aborting content update.` + ); + return; } @@ -343,7 +349,19 @@ class PullStrategy { // eslint-disable-next-line no-await-in-loop const templateData = await this.getPath(templatePath); slide.templateData = templateData; - fetchedTemplates[templatePath] = templateData; + + if (templateData !== null) { + fetchedTemplates[templatePath] = templateData; + } + } + + // A slide cannot work without templateData. Mark as invalid. + if (slide.templateData === null) { + Logger.log( + 'warn', + `Template (${templatePath}) not loaded for slide with id: ${slide['@id']}` + ); + slide.invalid = true; } if (slide?.theme !== '') { @@ -356,7 +374,10 @@ class PullStrategy { // eslint-disable-next-line no-await-in-loop const themeData = await this.getPath(themePath); slide.themeData = themeData; - fetchedThemes[themePath] = themeData; + + if (themeData !== null) { + fetchedThemes[themePath] = themeData; + } } } @@ -376,7 +397,10 @@ class PullStrategy { // eslint-disable-next-line no-await-in-loop const mediaData = await this.getPath(mediaId); slide.mediaData[mediaId] = mediaData; - fetchedMedia[mediaId] = mediaData; + + if (mediaData !== null) { + fetchedMedia[mediaId] = mediaData; + } } } diff --git a/src/region.js b/src/region.js index 62c5f0cb..02f38bdd 100644 --- a/src/region.js +++ b/src/region.js @@ -89,7 +89,10 @@ function Region({ region }) { * The event. The data is contained in detail. */ function regionContentListener(event) { - setNewSlides([...event.detail.slides]); + const receivedSlides = [...event.detail.slides]; + + // Filter out invalid slides. + setNewSlides(receivedSlides.filter((slide) => !slide.invalid)); } // Setup event listener for region content. From 2bb1d1cb1556cb84a9052bc1a4913579685a7db4 Mon Sep 17 00:00:00 2001 From: Troels Ugilt Jensen <6103205+tuj@users.noreply.github.com> Date: Thu, 6 Jul 2023 09:38:02 +0200 Subject: [PATCH 2/2] SUPPORT-1119: Updated changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1201205..566a4bd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +- [#108](https://github.com/os2display/display-client/pull/108) + Only slides with a loaded template should be rendered. + ## [1.2.6] - 2023-06-12 - [#105](https://github.com/os2display/display-client/pull/105)