Release 2.9.0
This commit is contained in:
+22
-4
@@ -1,6 +1,7 @@
|
||||
// Player playlist assembly, snapshot persistence, and playlist revision helpers.
|
||||
|
||||
const crypto = require('crypto');
|
||||
const { convertWeatherSnapshot } = require('#src/data/weather-units');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { createStyledQrCodeDataUrl } = require('../data/qr-code');
|
||||
@@ -166,7 +167,7 @@ function createPlayerPlaylistService(options) {
|
||||
try {
|
||||
const [screenRows] = await pool.query('SELECT id, name, slug, playlist_id, created_at, modified_at, created_by, modified_by FROM d_screens WHERE slug = ?', [slug]);
|
||||
if (!screenRows.length) {
|
||||
return { screen: null, playlist: null, slides: [], rssFeeds: [], apiSources: [], timetableGroups: [] };
|
||||
return { screen: null, playlist: null, slides: [], rssFeeds: [], apiSources: [], timetableGroups: [], weatherLocations: [] };
|
||||
}
|
||||
|
||||
const screen = screenRows[0];
|
||||
@@ -178,6 +179,7 @@ function createPlayerPlaylistService(options) {
|
||||
rssFeeds: [],
|
||||
apiSources: [],
|
||||
timetableGroups: [],
|
||||
weatherLocations: [],
|
||||
revision: getPlaylistRevision(screen, null, [], [], [], [], [], [])
|
||||
};
|
||||
await writeSnapshot(slug, payloadWithoutPlaylist);
|
||||
@@ -342,10 +344,25 @@ function createPlayerPlaylistService(options) {
|
||||
timetableGroups = Array.isArray(timetableData && timetableData.timetableGroups) ? timetableData.timetableGroups : [];
|
||||
}
|
||||
|
||||
let weatherLocations = [];
|
||||
if (typeof common.fetchWeatherLocationsData === 'function') {
|
||||
const weatherData = await common.fetchWeatherLocationsData(pool);
|
||||
weatherLocations = (weatherData.weatherLocations || []).map(function (location) {
|
||||
const responseJson = common.parseJsonSafe ? common.parseJsonSafe(location.last_response_json) : null;
|
||||
return Object.assign({}, location, {
|
||||
responseJson: convertWeatherSnapshot(responseJson, {
|
||||
temperature: location.temperature_unit === 'fahrenheit' ? 'fahrenheit' : 'celsius',
|
||||
wind: location.wind_unit === 'mph' ? 'mph' : location.wind_unit === 'ms' ? 'ms' : 'kmh',
|
||||
precipitation: location.precipitation_unit === 'inch' ? 'inch' : 'mm'
|
||||
})
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
await cachePlaceholderImages(slides, rssFeeds, apiSources);
|
||||
|
||||
const revision = getPlaylistRevision(screen, playlist, slideRows, scheduleRuleRows, templateRows, regionRows, rssFeeds, apiSources, timetableGroups);
|
||||
const payload = { screen: screen, playlist: playlist, slides: slides, rssFeeds: rssFeeds, apiSources: apiSources, timetableGroups: timetableGroups, revision: revision };
|
||||
const revision = getPlaylistRevision(screen, playlist, slideRows, scheduleRuleRows, templateRows, regionRows, rssFeeds, apiSources, timetableGroups, weatherLocations);
|
||||
const payload = { screen: screen, playlist: playlist, slides: slides, rssFeeds: rssFeeds, apiSources: apiSources, timetableGroups: timetableGroups, weatherLocations: weatherLocations, revision: revision };
|
||||
await writeSnapshot(slug, payload);
|
||||
return payload;
|
||||
} catch (error) {
|
||||
@@ -362,7 +379,7 @@ function createPlayerPlaylistService(options) {
|
||||
hash.update('\0');
|
||||
}
|
||||
|
||||
function getPlaylistRevision(screen, playlist, slideRows, scheduleRuleRows, templateRows, regionRows, rssFeeds, apiSources, timetableGroups) {
|
||||
function getPlaylistRevision(screen, playlist, slideRows, scheduleRuleRows, templateRows, regionRows, rssFeeds, apiSources, timetableGroups, weatherLocations) {
|
||||
const hash = crypto.createHash('sha1');
|
||||
|
||||
updatePlaylistRevisionHash(hash, screen && screen.id);
|
||||
@@ -426,6 +443,7 @@ function createPlayerPlaylistService(options) {
|
||||
updatePlaylistRevisionHash(hash, JSON.stringify(rssFeeds || []));
|
||||
updatePlaylistRevisionHash(hash, JSON.stringify(apiSources || []));
|
||||
updatePlaylistRevisionHash(hash, JSON.stringify(timetableGroups || []));
|
||||
updatePlaylistRevisionHash(hash, JSON.stringify(weatherLocations || []));
|
||||
|
||||
return hash.digest('hex');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user