Skip to content

Commit 0a6b4ed

Browse files
committed
Merge pull request #1431 from bbc:upstream/fix-peripheraldevice-subdevice-page-crash
fix: PeripheralDevice.configManifest is an optional field
2 parents 8ee3589 + c61bec6 commit 0a6b4ed

File tree

7 files changed

+18
-15
lines changed

7 files changed

+18
-15
lines changed

meteor/server/api/peripheralDevice.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ import { PackageManagerIntegration } from './integration/expectedPackages'
3434
import { profiler } from './profiler'
3535
import { QueueStudioJob } from '../worker/worker'
3636
import { StudioJobs } from '@sofie-automation/corelib/dist/worker/studio'
37-
import { DeviceConfigManifest } from '@sofie-automation/corelib/dist/deviceConfig'
3837
import {
3938
PlayoutChangedResults,
4039
PeripheralDeviceInitOptions,
@@ -58,7 +57,7 @@ import { insertInputDeviceTriggerIntoPreview } from '../publications/deviceTrigg
5857
import { receiveInputDeviceTrigger } from './deviceTriggers/observer'
5958
import { upsertBundles, generateTranslationBundleOriginId } from './translationsBundles'
6059
import { isTranslatableMessage } from '@sofie-automation/corelib/dist/TranslatableMessage'
61-
import { JSONBlobParse, JSONBlobStringify } from '@sofie-automation/shared-lib/dist/lib/JSONBlob'
60+
import { JSONBlobParse } from '@sofie-automation/shared-lib/dist/lib/JSONBlob'
6261
import {
6362
applyAndValidateOverrides,
6463
SomeObjectOverrideOp,
@@ -132,7 +131,7 @@ export namespace ServerPeripheralDeviceAPI {
132131
: undefined,
133132

134133
documentationUrl: options.documentationUrl,
135-
},
134+
} satisfies Partial<PeripheralDevice>,
136135
$unset:
137136
newVersionsStr !== oldVersionsStr
138137
? {
@@ -168,10 +167,7 @@ export namespace ServerPeripheralDeviceAPI {
168167
...options.configManifest,
169168
translations: undefined,
170169
}
171-
: literal<DeviceConfigManifest>({
172-
deviceConfigSchema: JSONBlobStringify({}),
173-
subdeviceManifest: {},
174-
}),
170+
: undefined,
175171

176172
documentationUrl: options.documentationUrl,
177173
})

packages/corelib/src/dataModel/PeripheralDevice.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,10 @@ export interface PeripheralDevice {
7979
/** Ignore this device when computing status in the GUI (other status reports are unaffected) */
8080
ignore?: boolean
8181

82-
configManifest: DeviceConfigManifest
82+
/**
83+
* If this device is a parent-device, the config manifest for the device
84+
*/
85+
configManifest: DeviceConfigManifest | undefined
8386

8487
/** If this is an ingest gateway, the last tiem data was received */
8588
lastDataReceived?: Time

packages/webui/src/client/ui/Settings/DeviceSettings.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,9 @@ export default translateWithTracker<IDeviceSettingsProps, IDeviceSettingsState,
196196
</div>
197197
</div>
198198

199-
<GenericAttahcedSubDeviceSettingsComponent device={device} subDevices={this.props.subDevices} />
199+
{!device.parentDeviceId && (
200+
<GenericAttahcedSubDeviceSettingsComponent device={device} subDevices={this.props.subDevices} />
201+
)}
200202

201203
{device &&
202204
device.type === PeripheralDeviceType.PACKAGE_MANAGER &&

packages/webui/src/client/ui/Settings/Studio/Devices/GenericSubDevices.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ export function GenericSubDevicesTable({
5151
literal<PeripheralDeviceTranslated>({
5252
_id: device._id,
5353
name: device.name || unprotectString(device._id),
54-
subdeviceConfigSchema: device.configManifest.subdeviceConfigSchema,
55-
subdeviceManifest: device.configManifest.subdeviceManifest,
54+
subdeviceConfigSchema: device.configManifest?.subdeviceConfigSchema,
55+
subdeviceManifest: device.configManifest?.subdeviceManifest ?? {},
5656
})
5757
)
5858
}

packages/webui/src/client/ui/Settings/Studio/Devices/ParentDevices.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ interface PeripheralDeviceTranslated {
132132
_id: PeripheralDeviceId
133133
name: string
134134
lastSeen: number
135-
deviceConfigSchema: JSONBlob<JSONSchema>
135+
deviceConfigSchema: JSONBlob<JSONSchema> | undefined
136136
}
137137

138138
interface ParentDevicesTableProps {
@@ -172,7 +172,7 @@ function GenericParentDevicesTable({
172172
_id: device._id,
173173
name: device.name || unprotectString(device._id),
174174
lastSeen: device.lastSeen,
175-
deviceConfigSchema: device.configManifest.deviceConfigSchema,
175+
deviceConfigSchema: device.configManifest?.deviceConfigSchema,
176176
})
177177
)
178178
}

packages/webui/src/client/ui/Settings/components/ConfigManifestOAuthFlow.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,13 @@ export const ConfigManifestOAuthFlowComponent = withTranslation()(
125125
})
126126
}
127127

128-
render(): JSX.Element {
128+
render(): JSX.Element | null {
129129
const { t } = this.props
130130
const secretStatus = (this.props.device.secretSettingsStatus || {}) as IngestDeviceSecretSettingsStatus
131131
const device = this.props.device
132132

133+
if (!device.configManifest) return null
134+
133135
return (
134136
<div>
135137
{secretStatus.accessToken ? (

packages/webui/src/client/ui/Settings/components/GenericDeviceSettingsComponent.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export function GenericAttahcedSubDeviceSettingsComponent({
5353

5454
return (
5555
<>
56-
{Object.keys(device.configManifest.subdeviceManifest ?? {}).length > 0 && (
56+
{Object.keys(device.configManifest?.subdeviceManifest ?? {}).length > 0 && (
5757
<>
5858
<h2 className="mb-4">{t('Attached Subdevices')}</h2>
5959

0 commit comments

Comments
 (0)