Release v2.10.3
This commit is contained in:
1 parent
30814f3f46
commit
3f4f57020a
60 files changed
+1075
-523
No files matched your search
@@ -1,4 +1,6 @@
|
||||
function createNotifyPlayerScreens(forwardPlayerCommand) {
|
||||
// Route screen refresh commands to the physical player hosting each screen.
|
||||
|
||||
function createNotifyPlayerScreens(forwardPlayerCommand, getScreenConnections, forwardPlayerCommandToBaseUrl, resolvePlayerBaseUrl) {
|
||||
if (typeof forwardPlayerCommand !== 'function') {
|
||||
throw new Error('createNotifyPlayerScreens requires a player command sender.');
|
||||
}
|
||||
@@ -12,12 +14,29 @@ function createNotifyPlayerScreens(forwardPlayerCommand) {
|
||||
return Promise.resolve(0);
|
||||
}
|
||||
|
||||
return Promise.allSettled(uniqueSlugs.map(function (slug) {
|
||||
return Promise.allSettled(uniqueSlugs.map(async function (slug) {
|
||||
// A screen may have connections on multiple players after a remote move or reconnect.
|
||||
if (typeof getScreenConnections === 'function' && typeof forwardPlayerCommandToBaseUrl === 'function') {
|
||||
const screenState = await getScreenConnections(slug);
|
||||
const connections = Array.isArray(screenState && screenState.connections) ? screenState.connections : [];
|
||||
const playerBaseUrls = Array.from(new Set(connections.map(function (connection) {
|
||||
return String(connection && connection.playerPublicBaseUrl || '').trim().replace(/\/$/, '');
|
||||
}).filter(Boolean)));
|
||||
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) {
|
||||
return forwardPlayerCommandToBaseUrl(playerBaseUrl, slug, commandOrPayload || 'refresh');
|
||||
}));
|
||||
}
|
||||
}
|
||||
return forwardPlayerCommand(slug, commandOrPayload || 'refresh');
|
||||
})).then(function (results) {
|
||||
return results.filter(function (result) {
|
||||
return result.status === 'fulfilled';
|
||||
const successful = results.filter(function (result) {
|
||||
return result.status === 'fulfilled' && (!result.value || result.value.ok !== false);
|
||||
}).length;
|
||||
return successful;
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user