@@ -10,7 +10,7 @@ import { PeripheralDevice, PeripheralDeviceType } from '@sofie-automation/coreli
1010import { Blueprint } from '@sofie-automation/corelib/dist/dataModel/Blueprint'
1111import { BucketId , ShowStyleBaseId , ShowStyleVariantId , StudioId } from '@sofie-automation/corelib/dist/dataModel/Ids'
1212import { 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'
1414import { protectString , unprotectString } from '@sofie-automation/corelib/dist/protectedString'
1515import {
1616 applyAndValidateOverrides ,
@@ -38,7 +38,7 @@ import {
3838 DEFAULT_FALLBACK_PART_DURATION ,
3939} from '@sofie-automation/shared-lib/dist/core/constants'
4040import { Bucket } from '@sofie-automation/meteor-lib/dist/collections/Buckets'
41- import { ForceQuickLoopAutoNext } from '@sofie-automation/corelib /dist/dataModel/RundownPlaylist '
41+ import { ForceQuickLoopAutoNext } from '@sofie-automation/shared-lib /dist/core/model/StudioSettings '
4242
4343/*
4444This file contains functions that convert between the internal Sofie-Core types and types exposed to the external API.
@@ -266,13 +266,17 @@ export async function studioFrom(apiStudio: APIStudio, existingId?: StudioId): P
266266 ? updateOverrides ( studio . blueprintConfigWithOverrides , apiStudio . config as IBlueprintConfig )
267267 : wrapDefaultObject ( { } )
268268
269+ const studioSettings = studioSettingsFrom ( apiStudio . settings )
270+
269271 return {
270272 _id : existingId ?? getRandomId ( ) ,
271273 name : apiStudio . name ,
272274 blueprintId : blueprint ?. _id ,
273275 blueprintConfigPresetId : apiStudio . blueprintConfigPresetId ,
274276 blueprintConfigWithOverrides : blueprintConfig ,
275- settings : studioSettingsFrom ( apiStudio . settings ) ,
277+ settingsWithOverrides : studio
278+ ? updateOverrides ( studio . settingsWithOverrides , studioSettings )
279+ : wrapDefaultObject ( studioSettings ) ,
276280 supportedShowStyleBase : apiStudio . supportedShowStyleBase ?. map ( ( id ) => protectString < ShowStyleBaseId > ( id ) ) ?? [ ] ,
277281 organizationId : null ,
278282 mappingsWithOverrides : wrapDefaultObject ( { } ) ,
@@ -292,8 +296,8 @@ export async function studioFrom(apiStudio: APIStudio, existingId?: StudioId): P
292296 }
293297}
294298
295- export function APIStudioFrom ( studio : DBStudio ) : APIStudio {
296- const studioSettings = APIStudioSettingsFrom ( studio . settings )
299+ export function APIStudioFrom ( studio : DBStudio ) : Complete < APIStudio > {
300+ const studioSettings = APIStudioSettingsFrom ( applyAndValidateOverrides ( studio . settingsWithOverrides ) . obj )
297301
298302 return {
299303 name : studio . name ,
@@ -305,7 +309,7 @@ export function APIStudioFrom(studio: DBStudio): APIStudio {
305309 }
306310}
307311
308- export function studioSettingsFrom ( apiStudioSettings : APIStudioSettings ) : IStudioSettings {
312+ export function studioSettingsFrom ( apiStudioSettings : APIStudioSettings ) : Complete < IStudioSettings > {
309313 return {
310314 frameRate : apiStudioSettings . frameRate ,
311315 mediaPreviewsUrl : apiStudioSettings . mediaPreviewsUrl ,
@@ -321,11 +325,14 @@ export function studioSettingsFrom(apiStudioSettings: APIStudioSettings): IStudi
321325 enableQuickLoop : apiStudioSettings . enableQuickLoop ,
322326 forceQuickLoopAutoNext : forceQuickLoopAutoNextFrom ( apiStudioSettings . forceQuickLoopAutoNext ) ,
323327 fallbackPartDuration : apiStudioSettings . fallbackPartDuration ?? DEFAULT_FALLBACK_PART_DURATION ,
328+ allowAdlibTestingSegment : apiStudioSettings . allowAdlibTestingSegment ,
329+ allowHold : apiStudioSettings . allowHold ?? true , // Backwards compatible
330+ allowPieceDirectPlay : apiStudioSettings . allowPieceDirectPlay ?? true , // Backwards compatible
324331 enableBuckets : apiStudioSettings . enableBuckets ,
325332 }
326333}
327334
328- export function APIStudioSettingsFrom ( settings : IStudioSettings ) : APIStudioSettings {
335+ export function APIStudioSettingsFrom ( settings : IStudioSettings ) : Complete < APIStudioSettings > {
329336 return {
330337 frameRate : settings . frameRate ,
331338 mediaPreviewsUrl : settings . mediaPreviewsUrl ,
@@ -341,6 +348,9 @@ export function APIStudioSettingsFrom(settings: IStudioSettings): APIStudioSetti
341348 enableQuickLoop : settings . enableQuickLoop ,
342349 forceQuickLoopAutoNext : APIForceQuickLoopAutoNextFrom ( settings . forceQuickLoopAutoNext ) ,
343350 fallbackPartDuration : settings . fallbackPartDuration ,
351+ allowAdlibTestingSegment : settings . allowAdlibTestingSegment ,
352+ allowHold : settings . allowHold ,
353+ allowPieceDirectPlay : settings . allowPieceDirectPlay ,
344354 enableBuckets : settings . enableBuckets ,
345355 }
346356}
0 commit comments