* chore: upgrade relevant deps

* fix: electron app to tray

* chore: cleanup dictionary

* feat: handle several messages in a event

* ux: disable irrelevant buttons in browser

* feat: parse and validate subscriptions

* feat: create UI for OSC Integration

* fix: cleanup logger behaviour

* feat: allow OSC settings to be changed at runtime
This commit is contained in:
Carlos Valente
2023-03-23 08:33:22 +01:00
committed by GitHub
parent 73533600a0
commit e937af62b1
36 changed files with 925 additions and 765 deletions
+28 -2
View File
@@ -1,5 +1,5 @@
import { generateId } from 'ontime-utils';
import { OSCSettings } from 'ontime-types';
import { OSCSettings, OscSubscription, TimerLifeCycle } from 'ontime-types';
import { block as blockDef, delay as delayDef } from '../models/eventsDefinition.js';
import { dbModel } from '../models/dataModel.js';
@@ -148,6 +148,28 @@ export const parseViewSettings = (data, enforce) => {
return newViews;
};
/**
* Parses and validates subscription object
* @param data
*/
export const validateOscSubscription = (data: OscSubscription) => {
if (!data) {
return false;
}
const timerKeys = Object.keys(TimerLifeCycle);
for (const key of timerKeys) {
if (!(key in data) || !Array.isArray(data[key])) {
return false;
}
for (const subscription of data[key]) {
if (!subscription.id || typeof subscription.message !== 'string' || typeof subscription.enabled !== 'boolean') {
return false;
}
}
}
return true;
};
/**
* Parse osc portion of an entry
*/
@@ -159,13 +181,17 @@ export const parseOsc = (
console.log('Found OSC definition, importing...');
const loadedConfig = data?.osc || {};
const validatedSubscriptions = validateOscSubscription(loadedConfig.subscriptions)
? loadedConfig.subscriptions
: dbModel.osc.subscriptions;
return {
portIn: loadedConfig.portIn ?? dbModel.osc.portIn,
portOut: loadedConfig.portOut ?? dbModel.osc.portOut,
targetIP: loadedConfig.targetIP ?? dbModel.osc.targetIP,
enabledIn: loadedConfig.enabledIn ?? dbModel.osc.enabledIn,
enabledOut: loadedConfig.enabledOut ?? dbModel.osc.enabledOut,
subscriptions: loadedConfig.subscriptions ?? dbModel.osc.subscriptions,
subscriptions: validatedSubscriptions,
};
} else if (enforce) {
console.log(`Created OSC object in db`);