refactor: setup global timer state (#629)

* refactor: setup global timer state

---------

Co-authored-by: Carlos Valente <34649812+cpvalente@users.noreply.github.com>
Co-authored-by: Carlos Valente <carlosvalente@pm.me>
This commit is contained in:
Alex Rohleder
2024-01-12 13:03:58 +01:00
committed by GitHub
parent e6bb52ad9c
commit f965db148c
12 changed files with 666 additions and 453 deletions
+34 -9
View File
@@ -1,4 +1,4 @@
import { HttpSettings, LogOrigin, OSCSettings } from 'ontime-types';
import { HttpSettings, LogOrigin, OSCSettings, Playback } from 'ontime-types';
import 'dotenv/config';
import express from 'express';
@@ -38,11 +38,12 @@ import { logger } from './classes/Logger.js';
import { oscIntegration } from './services/integration-service/OscIntegration.js';
import { httpIntegration } from './services/integration-service/HttpIntegration.js';
import { populateStyles } from './modules/loadStyles.js';
import { eventStore, getInitialPayload } from './stores/EventStore.js';
import { eventStore } from './stores/EventStore.js';
import { PlaybackService } from './services/PlaybackService.js';
import { RestorePoint, restoreService } from './services/RestoreService.js';
import { restoreService } from './services/RestoreService.js';
import { messageService } from './services/message-service/MessageService.js';
import { populateDemo } from './modules/loadDemo.js';
import { state } from './state.js';
console.log(`Starting Ontime version ${ONTIME_VERSION}`);
@@ -158,17 +159,41 @@ export const startServer = async () => {
// load restore point if it exists
const maybeRestorePoint = await restoreService.load();
if (maybeRestorePoint) {
logger.info(LogOrigin.Server, 'Found resumable state');
PlaybackService.resume(maybeRestorePoint);
}
eventTimer.init();
eventTimer.setRestoreCallback(async (newState: RestorePoint) => restoreService.save(newState));
// provide initial payload to event store
const initialPayload = getInitialPayload();
eventStore.init(initialPayload);
/**
* Module initialises the services and provides initial payload for the store
* Currently registered objects in store
* - Timer Service timer
* - Timer Service playback
* - Message Service timerMessage
* - Message Service publicMessage
* - Message Service lowerMessage
* - Message Service onAir
* - Event Loader loaded
* - Event Loader eventNow
* - Event Loader publicEventNow
* - Event Loader eventNext
* - Event Loader publicEventNext
*/
eventStore.init({
timer: state.timer,
playback: state.playback,
timerMessage: messageService.timerMessage,
publicMessage: messageService.publicMessage,
lowerMessage: messageService.lowerMessage,
externalMessage: messageService.externalMessage,
onAir: state.playback !== Playback.Stop,
loaded: eventLoader.loaded,
eventNow: eventLoader.eventNow,
publicEventNow: eventLoader.publicEventNow,
eventNext: eventLoader.eventNext,
publicEventNext: eventLoader.publicEventNext,
});
// eventStore set is a dependency of the services that publish to it
messageService.init(eventStore.set.bind(eventStore));