diff --git a/apps/server/src/controllers/ontimeController.ts b/apps/server/src/controllers/ontimeController.ts index 9ebb2ae1f..fd2463791 100644 --- a/apps/server/src/controllers/ontimeController.ts +++ b/apps/server/src/controllers/ontimeController.ts @@ -16,6 +16,7 @@ import { deleteAllEvents, notifyChanges } from '../services/rundown-service/Rund import { deepmerge } from 'ontime-utils'; import { runtimeCacheStore } from '../stores/cachingStore.js'; import { delayedRundownCacheKey } from '../services/rundown-service/delayedRundown.utils.js'; +import { integrationService } from '../services/integration-service/IntegrationService.js'; // Create controller for GET request to '/ontime/poll' // Returns data for current state @@ -315,10 +316,16 @@ export const postOSC = async (req, res) => { const oscSettings = req.body; await DataProvider.setOsc(oscSettings); + integrationService.unregister(oscIntegration); + // TODO: this update could be more granular, checking that relevant data was changed - const { message } = oscIntegration.init(oscSettings); + const { success, message } = oscIntegration.init(oscSettings); logger.info(LogOrigin.Tx, message); + if (success) { + integrationService.register(oscIntegration); + } + res.send(oscSettings).status(200); } catch (error) { res.status(400).send({ message: error.toString() }); diff --git a/apps/server/src/services/integration-service/OscIntegration.ts b/apps/server/src/services/integration-service/OscIntegration.ts index f9c730a28..8c3071cf5 100644 --- a/apps/server/src/services/integration-service/OscIntegration.ts +++ b/apps/server/src/services/integration-service/OscIntegration.ts @@ -26,7 +26,15 @@ export class OscIntegration implements IIntegration { * Initializes oscClient */ init(config: OSCSettings) { - const { targetIP, portOut, subscriptions } = config; + const { targetIP, portOut, subscriptions, enabledOut } = config; + + if (!enabledOut) { + this.oscClient?.close(); + return { + success: false, + message: 'OSC output disabled', + }; + } this.initSubscriptions(subscriptions);