Skip to content

Commit

Permalink
Merge pull request #139 from tv2/SOF-769/fixDirekteInAllParts
Browse files Browse the repository at this point in the history
fix: SOF-769 make `direkte` idents behave like other idents
  • Loading branch information
ianshade committed Sep 14, 2022
2 parents d891353 + 21fd0aa commit d91aea7
Show file tree
Hide file tree
Showing 113 changed files with 2,038 additions and 2,470 deletions.
2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "tv2-sofie-blueprints-inews",
"version": "1.7.4",
"version": "1.7.5",
"repository": "https://github.com/olzzon/tv2-sofie-blueprints-inews",
"license": "MIT",
"private": true,
Expand Down
67 changes: 37 additions & 30 deletions src/__mocks__/context.ts
Expand Up @@ -4,7 +4,6 @@ import * as _ from 'underscore'
import {
BlueprintMappings,
ConfigItemValue,
IActionExecutionContext,
IBlueprintConfig,
IBlueprintMutatablePart,
IBlueprintPart,
Expand All @@ -30,7 +29,7 @@ import {
PlaylistTimingType,
Time
} from '@tv2media/blueprints-integration'
import { literal } from 'tv2-common'
import { ITV2ActionExecutionContext, PieceMetaData } from 'tv2-common'
import { NoteType } from 'tv2-constants'
import { defaultShowStyleConfig, defaultStudioConfig } from '../tv2_afvd_showstyle/__tests__/configs'
import { parseConfig as parseShowStyleConfigAFVD } from '../tv2_afvd_showstyle/helpers/config'
Expand Down Expand Up @@ -82,7 +81,6 @@ export class CommonContext implements ICommonContext {
id = getHash(this.contextName + '_' + str.toString())
this.hashed[id] = str
return id
// return Random.id()
}
public unhashId(hash: string): string {
return this.hashed[hash] || hash
Expand Down Expand Up @@ -327,7 +325,7 @@ export class SyncIngestUpdateToPartInstanceContext extends RundownUserContext
mutatedPiece?: Omit<IBlueprintPiece<unknown>, 'lifespan'>
): IBlueprintPieceInstance<unknown> {
this.syncedPieceInstances.push(pieceInstanceId)
return literal<IBlueprintPieceInstance>({
return {
_id: pieceInstanceId,
piece: {
_id: '',
Expand All @@ -343,24 +341,24 @@ export class SyncIngestUpdateToPartInstanceContext extends RundownUserContext
content: mutatedPiece?.content ?? { timelineObjects: [] }
},
partInstanceId: ''
})
}
}
public insertPieceInstance(piece: IBlueprintPiece<unknown>): IBlueprintPieceInstance<unknown> {
return literal<IBlueprintPieceInstance>({
return {
_id: '',
piece: {
_id: '',
...piece
},
partInstanceId: ''
})
}
}
public updatePieceInstance(
pieceInstanceId: string,
piece: Partial<IBlueprintPiece<unknown>>
): IBlueprintPieceInstance<unknown> {
this.updatedPieceInstances.push(pieceInstanceId)
return literal<IBlueprintPieceInstance>({
return {
_id: pieceInstanceId,
piece: {
_id: '',
Expand All @@ -376,14 +374,14 @@ export class SyncIngestUpdateToPartInstanceContext extends RundownUserContext
content: piece.content ?? { timelineObjects: [] }
},
partInstanceId: ''
})
}
}
public removePieceInstances(...pieceInstanceIds: string[]): string[] {
this.removedPieceInstances.push(...pieceInstanceIds)
return pieceInstanceIds
}
public updatePartInstance(props: Partial<IBlueprintMutatablePart<unknown>>): IBlueprintPartInstance<unknown> {
this.updatedPartInstance = literal<IBlueprintPartInstance>({
this.updatedPartInstance = {
_id: '',
segmentId: '',
part: {
Expand All @@ -394,7 +392,7 @@ export class SyncIngestUpdateToPartInstanceContext extends RundownUserContext
...props
},
rehearsal: false
})
}
return this.updatedPartInstance
}

Expand All @@ -404,13 +402,14 @@ export class SyncIngestUpdateToPartInstanceContext extends RundownUserContext
}

// tslint:disable-next-line: max-classes-per-file
export class ActionExecutionContext extends ShowStyleUserContext implements IActionExecutionContext {
export class ActionExecutionContext extends ShowStyleUserContext implements ITV2ActionExecutionContext {
public currentPart: IBlueprintPartInstance
public currentPieceInstances: IBlueprintPieceInstance[]
public currentPieceInstances: Array<IBlueprintPieceInstance<PieceMetaData>>
public nextPart: IBlueprintPartInstance | undefined
public nextPieceInstances: IBlueprintPieceInstance[] | undefined
public nextPieceInstances: Array<IBlueprintPieceInstance<PieceMetaData>> | undefined

public takeAfterExecute: boolean = false
public isTV2Context: true = true

constructor(
contextName: string,
Expand All @@ -421,9 +420,9 @@ export class ActionExecutionContext extends ShowStyleUserContext implements IAct
segmentId: string,
partId: string,
currentPart: IBlueprintPartInstance,
currentPieceInstances: IBlueprintPieceInstance[],
currentPieceInstances: Array<IBlueprintPieceInstance<PieceMetaData>>,
nextPart?: IBlueprintPartInstance,
nextPieceInstances?: IBlueprintPieceInstance[]
nextPieceInstances?: Array<IBlueprintPieceInstance<PieceMetaData>>
) {
super(contextName, mappingsDefaults, parseStudioConfig, parseShowStyleConfig, rundownId, segmentId, partId)

Expand All @@ -446,15 +445,17 @@ export class ActionExecutionContext extends ShowStyleUserContext implements IAct
return this.nextPart
}
/** Get the PieceInstances for a modifiable PartInstance */
public async getPieceInstances(part: 'current' | 'next'): Promise<IBlueprintPieceInstance[]> {
public async getPieceInstances(part: 'current' | 'next'): Promise<Array<IBlueprintPieceInstance<PieceMetaData>>> {
if (part === 'current') {
return this.currentPieceInstances
}

return this.nextPieceInstances || []
}
/** Get the resolved PieceInstances for a modifiable PartInstance */
public async getResolvedPieceInstances(_part: 'current' | 'next'): Promise<IBlueprintResolvedPieceInstance[]> {
public async getResolvedPieceInstances(
_part: 'current' | 'next'
): Promise<Array<IBlueprintResolvedPieceInstance<PieceMetaData>>> {
return []
}
/** Get the last active piece on given layer */
Expand All @@ -465,7 +466,7 @@ export class ActionExecutionContext extends ShowStyleUserContext implements IAct
originalOnly?: boolean
pieceMetaDataFilter?: any
}
): Promise<IBlueprintPieceInstance | undefined> {
): Promise<IBlueprintPieceInstance<PieceMetaData> | undefined> {
return undefined
}
public async findLastScriptedPieceOnLayer(
Expand All @@ -474,11 +475,11 @@ export class ActionExecutionContext extends ShowStyleUserContext implements IAct
excludeCurrentPart?: boolean
pieceMetaDataFilter?: any
}
): Promise<IBlueprintPiece | undefined> {
): Promise<IBlueprintPiece<PieceMetaData> | undefined> {
return undefined
}
public async getPartInstanceForPreviousPiece(_piece: IBlueprintPieceInstance): Promise<IBlueprintPartInstance> {
return literal<IBlueprintPartInstance>({
return {
_id: '',
segmentId: '',
part: {
Expand All @@ -488,15 +489,18 @@ export class ActionExecutionContext extends ShowStyleUserContext implements IAct
title: ''
},
rehearsal: false
})
}
}
public async getPartForPreviousPiece(_piece: { _id: string }): Promise<IBlueprintPart | undefined> {
return undefined
}
/** Creative actions */
/** Insert a piece. Returns id of new PieceInstance. Any timelineObjects will have their ids changed, so are not safe to reference from another piece */
public async insertPiece(part: 'current' | 'next', piece: IBlueprintPiece): Promise<IBlueprintPieceInstance> {
const pieceInstance: IBlueprintPieceInstance = {
public async insertPiece(
part: 'current' | 'next',
piece: IBlueprintPiece<PieceMetaData>
): Promise<IBlueprintPieceInstance<PieceMetaData>> {
const pieceInstance: IBlueprintPieceInstance<PieceMetaData> = {
_id: '',
piece: {
_id: '',
Expand All @@ -517,19 +521,22 @@ export class ActionExecutionContext extends ShowStyleUserContext implements IAct
public async updatePieceInstance(
_pieceInstanceId: string,
piece: Partial<OmitId<IBlueprintPiece>>
): Promise<IBlueprintPieceInstance> {
): Promise<IBlueprintPieceInstance<PieceMetaData>> {
return {
_id: '',
piece: {
_id: '',
...(piece as IBlueprintPiece)
...(piece as IBlueprintPiece<PieceMetaData>)
},
partInstanceId: ''
}
}
/** Insert a queued part to follow the current part */
public async queuePart(part: IBlueprintPart, pieces: IBlueprintPiece[]): Promise<IBlueprintPartInstance> {
const instance = literal<IBlueprintPartInstance>({
public async queuePart(
part: IBlueprintPart,
pieces: Array<IBlueprintPiece<PieceMetaData>>
): Promise<IBlueprintPartInstance> {
const instance: IBlueprintPartInstance = {
_id: '',
segmentId: this.notesSegmentId || '',
part: {
Expand All @@ -538,10 +545,10 @@ export class ActionExecutionContext extends ShowStyleUserContext implements IAct
segmentId: this.notesSegmentId || ''
},
rehearsal: false
})
}

this.nextPart = instance
this.nextPieceInstances = pieces.map<IBlueprintPieceInstance>(p => ({
this.nextPieceInstances = pieces.map<IBlueprintPieceInstance<PieceMetaData>>(p => ({
_id: (Date.now() * Math.random()).toString(),
piece: {
_id: '',
Expand Down
22 changes: 11 additions & 11 deletions src/inews-mixins/playlist.ts
Expand Up @@ -93,13 +93,13 @@ function getRundownPlaylistInfoINewsPlaylist(
resultPlaylist: BlueprintResultRundownPlaylist
): BlueprintResultRundownPlaylist {
const result: BlueprintResultOrderedRundowns = {}
return literal<BlueprintResultRundownPlaylist>({
return {
...resultPlaylist,
order: rundowns.reduce((prev, curr) => {
prev[curr.externalId] = (curr.metaData as RundownMetaData).rank
return prev
}, result)
})
}
}

type GetRundownMixin = (
Expand Down Expand Up @@ -152,15 +152,15 @@ export function GetRundownPlaylistInfoWithMixins(
expectedStart: lastRundownTiming.expectedStart
}
}
let result =
(getRundownPlaylistInfo ? getRundownPlaylistInfo(context, rundowns, '') : undefined) ??
literal<BlueprintResultRundownPlaylist>({
playlist: literal<IBlueprintResultRundownPlaylist>({
name: (rundowns[0] ?? { name: '' }).name,
timing
}),
order: null
})
let result: BlueprintResultRundownPlaylist = (getRundownPlaylistInfo
? getRundownPlaylistInfo(context, rundowns, '')
: undefined) ?? {
playlist: literal<IBlueprintResultRundownPlaylist>({
name: (rundowns[0] ?? { name: '' }).name,
timing
}),
order: null
}

for (const mixin of mixins) {
result = mixin(context, rundowns, result)
Expand Down

0 comments on commit d91aea7

Please sign in to comment.