Release v2.10.6
This commit is contained in:
1 parent
ca9f38f3b9
commit
8c0c22156e
30 files changed
+922
-531
No files matched your search
@@ -1,6 +1,6 @@
|
||||
// Route screen refresh commands to the physical player hosting each screen.
|
||||
|
||||
function createNotifyPlayerScreens(forwardPlayerCommand, getScreenConnections, forwardPlayerCommandToBaseUrl, resolvePlayerBaseUrl) {
|
||||
function createNotifyPlayerScreens(forwardPlayerCommand, getScreenConnections, forwardPlayerCommandToBaseUrl, resolvePlayerBaseUrl, forwardPlayerCommandToDevice) {
|
||||
if (typeof forwardPlayerCommand !== 'function') {
|
||||
throw new Error('createNotifyPlayerScreens requires a player command sender.');
|
||||
}
|
||||
@@ -19,17 +19,35 @@ function createNotifyPlayerScreens(forwardPlayerCommand, getScreenConnections, f
|
||||
if (typeof getScreenConnections === 'function' && typeof forwardPlayerCommandToBaseUrl === 'function') {
|
||||
const screenState = await getScreenConnections(slug);
|
||||
const connections = Array.isArray(screenState && screenState.connections) ? screenState.connections : [];
|
||||
const deviceIds = Array.from(new Set(connections.map(function (connection) {
|
||||
return String(connection && connection.playerDeviceId || '').trim();
|
||||
}).filter(Boolean)));
|
||||
const playerBaseUrls = Array.from(new Set(connections.map(function (connection) {
|
||||
if (String(connection && connection.playerDeviceId || '').trim()) {
|
||||
return '';
|
||||
}
|
||||
return String(connection && connection.playerPublicBaseUrl || '').trim().replace(/\/$/, '');
|
||||
}).filter(Boolean)));
|
||||
const deviceResults = deviceIds.length && typeof forwardPlayerCommandToDevice === 'function'
|
||||
? await Promise.all(deviceIds.map(function (deviceId) {
|
||||
return forwardPlayerCommandToDevice(deviceId, {
|
||||
command: commandOrPayload || 'refresh',
|
||||
screenSlug: slug
|
||||
});
|
||||
}))
|
||||
: [];
|
||||
let baseUrlResults = [];
|
||||
if (playerBaseUrls.length) {
|
||||
const resolvedPlayerBaseUrls = typeof resolvePlayerBaseUrl === 'function'
|
||||
? await Promise.all(playerBaseUrls.map(function (playerBaseUrl) { return resolvePlayerBaseUrl(playerBaseUrl); }))
|
||||
: playerBaseUrls;
|
||||
return Promise.all(resolvedPlayerBaseUrls.filter(Boolean).map(function (playerBaseUrl) {
|
||||
baseUrlResults = await Promise.all(resolvedPlayerBaseUrls.filter(Boolean).map(function (playerBaseUrl) {
|
||||
return forwardPlayerCommandToBaseUrl(playerBaseUrl, slug, commandOrPayload || 'refresh');
|
||||
}));
|
||||
}
|
||||
if (deviceResults.length || baseUrlResults.length) {
|
||||
return deviceResults.concat(baseUrlResults);
|
||||
}
|
||||
}
|
||||
return forwardPlayerCommand(slug, commandOrPayload || 'refresh');
|
||||
})).then(function (results) {
|
||||
|
||||
Reference in new issue
Block a user