|
1 | 1 | import { IMOSObjectStatus } from '@mos-connection/connector'
|
2 | 2 | import type { MosDeviceStatusesConfig } from '../generated/devices'
|
3 | 3 | import {
|
| 4 | + IngestPartNotifyItemReady, |
4 | 5 | IngestPartPlaybackStatus,
|
5 | 6 | type IngestPartStatus,
|
6 | 7 | type IngestRundownStatus,
|
@@ -51,14 +52,12 @@ export function diffStatuses(
|
51 | 52 | })
|
52 | 53 |
|
53 | 54 | // Clear any items too
|
54 |
| - for (const [itemId, isReady] of Object.entries<boolean | undefined>(story.itemsReady)) { |
55 |
| - if (isReady === undefined) continue |
56 |
| - |
| 55 | + for (const itemStatus of story.itemsReady) { |
57 | 56 | statuses.push({
|
58 | 57 | type: 'item',
|
59 | 58 | rundownExternalId,
|
60 | 59 | storyId,
|
61 |
| - itemId: itemId, |
| 60 | + itemId: itemStatus.externalId, |
62 | 61 | mosStatus: MOS_STATUS_UNKNOWN,
|
63 | 62 | })
|
64 | 63 | }
|
@@ -88,21 +87,35 @@ export function diffStatuses(
|
88 | 87 | })
|
89 | 88 | }
|
90 | 89 |
|
91 |
| - // Diff each item in the story |
92 |
| - const previousItemStatuses = previousStatus?.itemsReady ?? {} |
93 |
| - const allItemIds = new Set<string>([...Object.keys(status.itemsReady), ...Object.keys(previousItemStatuses)]) |
| 90 | + const allItemIds = new Set<string>() |
| 91 | + const previousItemStatuses = new Map<string, IngestPartNotifyItemReady>() |
| 92 | + const newItemStatuses = new Map<string, IngestPartNotifyItemReady>() |
94 | 93 |
|
| 94 | + for (const itemStatus of previousStatus?.itemsReady ?? []) { |
| 95 | + previousItemStatuses.set(itemStatus.externalId, itemStatus) |
| 96 | + allItemIds.add(itemStatus.externalId) |
| 97 | + } |
| 98 | + for (const itemStatus of status.itemsReady) { |
| 99 | + newItemStatuses.set(itemStatus.externalId, itemStatus) |
| 100 | + allItemIds.add(itemStatus.externalId) |
| 101 | + } |
| 102 | + |
| 103 | + // Diff each item in the story |
95 | 104 | for (const itemId of allItemIds) {
|
96 |
| - const newReady = status.itemsReady[itemId] |
97 |
| - const previousReady = previousItemStatuses[itemId] |
| 105 | + const newItemStatus = newItemStatuses.get(itemId) |
| 106 | + const previousItemStatus = previousItemStatuses.get(itemId) |
98 | 107 |
|
99 |
| - const newMosStatus = |
100 |
| - newReady !== undefined |
101 |
| - ? buildMosStatus(config, status.playbackStatus, newReady, newStatuses?.active) |
102 |
| - : null |
| 108 | + const newMosStatus = newItemStatus |
| 109 | + ? buildMosStatus(config, status.playbackStatus, newItemStatus.ready, newStatuses?.active) |
| 110 | + : null |
103 | 111 | const previousMosStatus =
|
104 |
| - previousReady !== undefined && previousStatus |
105 |
| - ? buildMosStatus(config, previousStatus.playbackStatus, previousReady, previousStatuses?.active) |
| 112 | + previousItemStatus && previousStatus |
| 113 | + ? buildMosStatus( |
| 114 | + config, |
| 115 | + previousStatus.playbackStatus, |
| 116 | + previousItemStatus.ready, |
| 117 | + previousStatuses?.active |
| 118 | + ) |
106 | 119 | : null
|
107 | 120 |
|
108 | 121 | if ((newMosStatus !== null || previousMosStatus !== null) && previousMosStatus !== newMosStatus) {
|
|
0 commit comments