From bffe0e6ea6c6916ac227c6bb61ea7cf5fc7e0617 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Tue, 14 Apr 2026 02:57:02 +0200 Subject: [PATCH] Update types and error handling in project-scheduler.ts --- src/scheduler/project-scheduler.ts | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/scheduler/project-scheduler.ts b/src/scheduler/project-scheduler.ts index 42add680..af83915c 100644 --- a/src/scheduler/project-scheduler.ts +++ b/src/scheduler/project-scheduler.ts @@ -3,11 +3,11 @@ import { areControlEffectsEqual, cloneControlEffect, cloneControlTargetRef, + type ControlEffect, + type ControlTargetRef, createActorControlTargetRef, createSetActorPresenceControlEffect, - getControlTargetRefKey, - type ActorControlTargetRef, - type SetActorPresenceControlEffect + getControlTargetRefKey } from "../controls/control-surface"; import { HOURS_PER_DAY, @@ -44,12 +44,12 @@ export interface ProjectScheduleRoutine { id: string; title: string; enabled: boolean; - target: ActorControlTargetRef; + target: ControlTargetRef; days: ProjectScheduleDaySelection; startHour: number; endHour: number; priority: number; - effect: SetActorPresenceControlEffect; + effect: ControlEffect; } export interface ProjectScheduler { @@ -124,22 +124,25 @@ function normalizeProjectScheduleHours(value: number, label: string): number { } function normalizeProjectScheduleEffectTarget( - target: ActorControlTargetRef, - effect: SetActorPresenceControlEffect | undefined -): SetActorPresenceControlEffect { + target: ControlTargetRef, + effect: ControlEffect | undefined +): ControlEffect { if (effect === undefined) { + if (target.kind !== "actor") { + throw new Error( + "Project schedule routines must author an explicit control effect for non-actor targets." + ); + } + return createSetActorPresenceControlEffect({ target, active: true }); } - if ( - effect.type !== "setActorPresence" || - getControlTargetRefKey(effect.target) !== getControlTargetRefKey(target) - ) { + if (getControlTargetRefKey(effect.target) !== getControlTargetRefKey(target)) { throw new Error( - "Project schedule routine effects must target the same authored actor target." + "Project schedule routine effects must target the same authored control target." ); }