Skip to content

Commit 91d69ab

Browse files
committed
wip: make settings required
1 parent 044c222 commit 91d69ab

File tree

9 files changed

+32
-9
lines changed

9 files changed

+32
-9
lines changed

meteor/__mocks__/defaultCollectionObjects.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,8 @@ export function defaultStudio(_id: StudioId): DBStudio {
110110
mediaPreviewsUrl: '',
111111
minimumTakeSpan: DEFAULT_MINIMUM_TAKE_SPAN,
112112
fallbackPartDuration: DEFAULT_FALLBACK_PART_DURATION,
113+
allowHold: false,
114+
allowPieceDirectPlay: false,
113115
},
114116
_rundownVersionHash: '',
115117
routeSetsWithOverrides: wrapDefaultObject({}),

meteor/server/api/rest/v1/typeConversion.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { PeripheralDevice, PeripheralDeviceType } from '@sofie-automation/coreli
1010
import { Blueprint } from '@sofie-automation/corelib/dist/dataModel/Blueprint'
1111
import { BucketId, ShowStyleBaseId, ShowStyleVariantId, StudioId } from '@sofie-automation/corelib/dist/dataModel/Ids'
1212
import { DBStudio, IStudioSettings } from '@sofie-automation/corelib/dist/dataModel/Studio'
13-
import { assertNever, getRandomId, literal } from '@sofie-automation/corelib/dist/lib'
13+
import { assertNever, Complete, getRandomId, literal } from '@sofie-automation/corelib/dist/lib'
1414
import { protectString, unprotectString } from '@sofie-automation/corelib/dist/protectedString'
1515
import {
1616
applyAndValidateOverrides,
@@ -292,7 +292,7 @@ export async function studioFrom(apiStudio: APIStudio, existingId?: StudioId): P
292292
}
293293
}
294294

295-
export function APIStudioFrom(studio: DBStudio): APIStudio {
295+
export function APIStudioFrom(studio: DBStudio): Complete<APIStudio> {
296296
const studioSettings = APIStudioSettingsFrom(studio.settings)
297297

298298
return {
@@ -305,7 +305,7 @@ export function APIStudioFrom(studio: DBStudio): APIStudio {
305305
}
306306
}
307307

308-
export function studioSettingsFrom(apiStudioSettings: APIStudioSettings): IStudioSettings {
308+
export function studioSettingsFrom(apiStudioSettings: APIStudioSettings): Complete<IStudioSettings> {
309309
return {
310310
frameRate: apiStudioSettings.frameRate,
311311
mediaPreviewsUrl: apiStudioSettings.mediaPreviewsUrl,
@@ -321,10 +321,13 @@ export function studioSettingsFrom(apiStudioSettings: APIStudioSettings): IStudi
321321
enableQuickLoop: apiStudioSettings.enableQuickLoop,
322322
forceQuickLoopAutoNext: forceQuickLoopAutoNextFrom(apiStudioSettings.forceQuickLoopAutoNext),
323323
fallbackPartDuration: apiStudioSettings.fallbackPartDuration ?? DEFAULT_FALLBACK_PART_DURATION,
324+
allowAdlibTestingSegment: apiStudioSettings.allowAdlibTestingSegment,
325+
allowHold: apiStudioSettings.allowHold ?? true, // Backwards compatible
326+
allowPieceDirectPlay: apiStudioSettings.allowPieceDirectPlay ?? true, // Backwards compatible
324327
}
325328
}
326329

327-
export function APIStudioSettingsFrom(settings: IStudioSettings): APIStudioSettings {
330+
export function APIStudioSettingsFrom(settings: IStudioSettings): Complete<APIStudioSettings> {
328331
return {
329332
frameRate: settings.frameRate,
330333
mediaPreviewsUrl: settings.mediaPreviewsUrl,
@@ -340,6 +343,9 @@ export function APIStudioSettingsFrom(settings: IStudioSettings): APIStudioSetti
340343
enableQuickLoop: settings.enableQuickLoop,
341344
forceQuickLoopAutoNext: APIForceQuickLoopAutoNextFrom(settings.forceQuickLoopAutoNext),
342345
fallbackPartDuration: settings.fallbackPartDuration,
346+
allowAdlibTestingSegment: settings.allowAdlibTestingSegment,
347+
allowHold: settings.allowHold,
348+
allowPieceDirectPlay: settings.allowPieceDirectPlay,
343349
}
344350
}
345351

meteor/server/api/studio/api.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ export async function insertStudioInner(organizationId: OrganizationId | null, n
4949
frameRate: 25,
5050
mediaPreviewsUrl: '',
5151
minimumTakeSpan: DEFAULT_MINIMUM_TAKE_SPAN,
52+
allowHold: false,
53+
allowPieceDirectPlay: false,
5254
},
5355
_rundownVersionHash: '',
5456
routeSetsWithOverrides: wrapDefaultObject({}),

meteor/server/lib/rest/v1/studios.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,4 +186,7 @@ export interface APIStudioSettings {
186186
forceQuickLoopAutoNext?: 'disabled' | 'enabled_when_valid_duration' | 'enabled_forcing_min_duration'
187187
minimumTakeSpan?: number
188188
fallbackPartDuration?: number
189+
allowAdlibTestingSegment?: boolean
190+
allowHold?: boolean
191+
allowPieceDirectPlay?: boolean
189192
}

meteor/server/migration/0_1_0.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,8 @@ export const addSteps = addMigrationSteps('0.1.0', [
441441
frameRate: 25,
442442
mediaPreviewsUrl: '',
443443
minimumTakeSpan: DEFAULT_MINIMUM_TAKE_SPAN,
444+
allowHold: false,
445+
allowPieceDirectPlay: false,
444446
},
445447
mappingsWithOverrides: wrapDefaultObject({}),
446448
blueprintConfigWithOverrides: wrapDefaultObject({}),

meteor/server/migration/__tests__/migrations.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,8 @@ describe('Migrations', () => {
125125
mediaPreviewsUrl: '',
126126
frameRate: 25,
127127
minimumTakeSpan: DEFAULT_MINIMUM_TAKE_SPAN,
128+
allowHold: true,
129+
allowPieceDirectPlay: true,
128130
},
129131
mappingsWithOverrides: wrapDefaultObject({}),
130132
blueprintConfigWithOverrides: wrapDefaultObject({}),
@@ -163,6 +165,8 @@ describe('Migrations', () => {
163165
mediaPreviewsUrl: '',
164166
frameRate: 25,
165167
minimumTakeSpan: DEFAULT_MINIMUM_TAKE_SPAN,
168+
allowHold: true,
169+
allowPieceDirectPlay: true,
166170
},
167171
mappingsWithOverrides: wrapDefaultObject({}),
168172
blueprintConfigWithOverrides: wrapDefaultObject({}),
@@ -201,6 +205,8 @@ describe('Migrations', () => {
201205
mediaPreviewsUrl: '',
202206
frameRate: 25,
203207
minimumTakeSpan: DEFAULT_MINIMUM_TAKE_SPAN,
208+
allowHold: true,
209+
allowPieceDirectPlay: true,
204210
},
205211
mappingsWithOverrides: wrapDefaultObject({}),
206212
blueprintConfigWithOverrides: wrapDefaultObject({}),

meteor/server/publications/pieceContentStatusUI/__tests__/checkPieceContentStatus.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,7 @@ describe('lib/mediaObjects', () => {
166166
test('getAcceptedFormats', () => {
167167
const acceptedFormats = getAcceptedFormats({
168168
supportedMediaFormats: '1920x1080i5000, 1280x720, i5000, i5000tff',
169-
mediaPreviewsUrl: '',
170169
frameRate: 25,
171-
minimumTakeSpan: DEFAULT_MINIMUM_TAKE_SPAN,
172170
})
173171
expect(acceptedFormats).toEqual([
174172
['1920', '1080', 'i', '5000', undefined],
@@ -251,6 +249,8 @@ describe('lib/mediaObjects', () => {
251249
supportedAudioStreams: '4',
252250
frameRate: 25,
253251
minimumTakeSpan: DEFAULT_MINIMUM_TAKE_SPAN,
252+
allowHold: false,
253+
allowPieceDirectPlay: false,
254254
}
255255

256256
const mockDefaultStudio = defaultStudio(protectString('studio0'))

meteor/server/publications/pieceContentStatusUI/checkPieceContentStatus.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,9 @@ export function acceptFormat(format: string, formats: Array<Array<string>>): boo
147147
* [undefined, undefined, i, 5000, tff]
148148
* ]
149149
*/
150-
export function getAcceptedFormats(settings: IStudioSettings | undefined): Array<Array<string>> {
150+
export function getAcceptedFormats(
151+
settings: Pick<IStudioSettings, 'supportedMediaFormats' | 'frameRate'> | undefined
152+
): Array<Array<string>> {
151153
const formatsConfigField = settings ? settings.supportedMediaFormats : ''
152154
const formatsString: string =
153155
(formatsConfigField && formatsConfigField !== '' ? formatsConfigField : '1920x1080i5000') + ''

packages/corelib/src/dataModel/Studio.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,13 @@ export interface IStudioSettings {
9494
* When disabled, any action-triggers that would normally trigger a hold operation will be silently ignored
9595
* This should only block entering hold, to ensure Sofie doesn't get stuck if it somehow gets into hold
9696
*/
97-
allowHold?: boolean
97+
allowHold: boolean
9898

9999
/**
100100
* Whether to allow direct playing of a piece in the rundown
101101
* This behaviour is usally triggered by double-clicking on a piece in the GUI
102102
*/
103-
allowPieceDirectPlay?: boolean
103+
allowPieceDirectPlay: boolean
104104
}
105105

106106
export type StudioLight = Omit<DBStudio, 'mappingsWithOverrides' | 'blueprintConfigWithOverrides'>

0 commit comments

Comments
 (0)