From 138be478ca74c72f85cac158b27908d05b5b4d7e Mon Sep 17 00:00:00 2001 From: Alex Christoffer Rasmussen Date: Tue, 7 Nov 2023 21:24:44 +0100 Subject: [PATCH] Addtime in sec (#576) * addtime endpoint --------- Co-authored-by: arc-alex --- .../src/controllers/integrationController.ts | 14 +++++++++++ apps/server/src/services/PlaybackService.ts | 23 +++++++++++++------ apps/server/src/services/TimerService.ts | 4 ++-- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/apps/server/src/controllers/integrationController.ts b/apps/server/src/controllers/integrationController.ts index 7103dbb69..1a7607f2b 100644 --- a/apps/server/src/controllers/integrationController.ts +++ b/apps/server/src/controllers/integrationController.ts @@ -7,6 +7,7 @@ import { parse, updateEvent } from './integrationController.config.js'; import { isKeyOfType } from 'ontime-types/src/utils/guards.js'; import { event } from '../models/eventsDefinition.js'; +//TODO: re-throwing the error does not add any extra information or value export function dispatchFromAdapter( type: string, args: { @@ -174,6 +175,19 @@ export function dispatchFromAdapter( PlaybackService.roll(); break; } + case 'addtime': { + const time = Number(payload); + if (isNaN(time)) { + throw new Error(`Time not recognised ${payload}`); + } + try { + PlaybackService.addTime(time); + } catch (error) { + throw new Error(`Could not add time: ${error}`); + } + break; + } + //deprecated case 'delay': { const delayTime = Number(payload); if (isNaN(delayTime)) { diff --git a/apps/server/src/services/PlaybackService.ts b/apps/server/src/services/PlaybackService.ts index 65dcb1d8a..69ddbde9e 100644 --- a/apps/server/src/services/PlaybackService.ts +++ b/apps/server/src/services/PlaybackService.ts @@ -269,17 +269,26 @@ export class PlaybackService { } } + /** + * Adds time to current event + * @param {number} time - time to add in seconds + */ + static addTime(time: number) { + if (eventTimer.loadedTimerId) { + const timeInMs = time * 1000; + eventTimer.addTime(timeInMs); + timeInMs > 0 + ? logger.info(LogOrigin.Playback, `Added ${time} sec`) + : logger.info(LogOrigin.Playback, `Removed ${time} sec`); + } + } + /** * Adds delay to current event + * @deprecated Use addTime * @param {number} delayTime time in minutes */ static setDelay(delayTime: number) { - if (eventTimer.loadedTimerId) { - const delayInMs = delayTime * 1000 * 60; - eventTimer.delay(delayInMs); - delayInMs > 0 - ? logger.info(LogOrigin.Playback, `Added ${delayTime} min delay`) - : logger.info(LogOrigin.Playback, `Removed ${delayTime} min delay`); - } + this.addTime(delayTime * 60); } } diff --git a/apps/server/src/services/TimerService.ts b/apps/server/src/services/TimerService.ts index db90fe02c..4f3714cc0 100644 --- a/apps/server/src/services/TimerService.ts +++ b/apps/server/src/services/TimerService.ts @@ -304,10 +304,10 @@ export class TimerService { } /** - * Delays running timer by given amount + * Adds time to running timer by given amount * @param {number} amount */ - delay(amount: number) { + addTime(amount: number) { if (!this.loadedTimerId) { return; }