Skip to content

Commit 489572a

Browse files
authored
Merge pull request #140 from os2display/feature/bug-campaign-exit-black-screen
Fixed issue where campaign end resulted in blank screen
2 parents 5161cf4 + a395505 commit 489572a

File tree

4 files changed

+17
-6
lines changed

4 files changed

+17
-6
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file.
44

55
## Unreleased
66

7+
- [#140](https://github.com/os2display/display-client/pull/140)
8+
- Fixed issue where campaign end resulted in blank screen.
9+
710
## [2.1.1] - 2024-10-23
811

912
- [#138](https://github.com/os2display/display-client/pull/138)

src/components/region.jsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,16 @@ function Region({ region }) {
111111

112112
// Setup event listener for region content.
113113
useEffect(() => {
114+
logger.info(`Mounting region ${regionId}`);
115+
114116
document.addEventListener(
115117
`regionContent-${regionId}`,
116118
regionContentListener
117119
);
118120

119121
return function cleanup() {
122+
logger.info(`Unmounting region ${regionId}`);
123+
120124
// Emit event that region has been removed.
121125
const event = new CustomEvent("regionRemoved", {
122126
detail: {

src/data-sync/pull-strategy.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,7 @@ class PullStrategy {
202202

203203
const newScreen = cloneDeep(screen);
204204

205-
// Campaigns data
206-
let hasActiveCampaign = false;
205+
newScreen.hasActiveCampaign = false;
207206

208207
const newScreenChecksums = newScreen?.relationsChecksum ?? [];
209208
const oldScreenChecksums =
@@ -224,13 +223,13 @@ class PullStrategy {
224223
if (newScreen.campaignsData.length > 0) {
225224
newScreen.campaignsData.forEach(({ published }) => {
226225
if (isPublished(published)) {
227-
hasActiveCampaign = true;
226+
newScreen.hasActiveCampaign = true;
228227
}
229228
});
230229
}
231230

232231
// With active campaigns, we override region/layout values.
233-
if (hasActiveCampaign) {
232+
if (newScreen.hasActiveCampaign) {
234233
logger.info(`Has active campaign.`);
235234

236235
// Create ulid to connect the campaign with the regions/playlists.
@@ -259,8 +258,11 @@ class PullStrategy {
259258
newScreen.regionData
260259
);
261260
} else {
261+
logger.info(`Has no active campaign.`);
262+
262263
// Get layout: Defines layout and regions.
263264
if (
265+
this.lastestScreenData?.hasActiveCampaign ||
264266
oldScreenChecksums === null ||
265267
oldScreenChecksums?.layout !== newScreenChecksums?.layout
266268
) {
@@ -274,6 +276,7 @@ class PullStrategy {
274276

275277
// Fetch regions playlists: Yields playlists of slides for the regions
276278
if (
279+
this.lastestScreenData?.hasActiveCampaign ||
277280
oldScreenChecksums === null ||
278281
oldScreenChecksums?.regions !== newScreenChecksums?.regions
279282
) {
@@ -394,8 +397,6 @@ class PullStrategy {
394397
}
395398
/* eslint-enable no-restricted-syntax,no-await-in-loop */
396399

397-
logger.info(`Emitting screen data.`);
398-
399400
this.lastestScreenData = newScreen;
400401

401402
// Deliver result to rendering

src/service/schedule-service.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ class ScheduleService {
5858
clearInterval(this.intervals[regionId]);
5959
delete this.intervals[regionId];
6060
}
61+
62+
// Remove cached version of region data.
63+
delete this.regions[regionId];
6164
}
6265

6366
/**

0 commit comments

Comments
 (0)