mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-13 03:13:47 +00:00
7c1d2f4554
* refactor: remove unneeded async * chore: add express Router type to all routes * refactor: don't use index in react key * refactor: correctly get error message in excel route * refactor: avoid exporting muteable values
76 lines
2.6 KiB
TypeScript
76 lines
2.6 KiB
TypeScript
import express from 'express';
|
|
import type { Request, Response, Router } from 'express';
|
|
import { matchedData } from 'express-validator';
|
|
import { deepEqual } from 'fast-equals';
|
|
import { ErrorResponse, PortInfo, RefetchKey, Settings } from 'ontime-types';
|
|
import { getErrorMessage, obfuscate } from 'ontime-utils';
|
|
|
|
import { sendRefetch } from '../../adapters/WebsocketAdapter.js';
|
|
import { getDataProvider } from '../../classes/data-provider/DataProvider.js';
|
|
import { portManager } from '../../classes/port-manager/PortManager.js';
|
|
import * as appState from '../../services/app-state-service/AppStateService.js';
|
|
import { validateSettings, validateWelcomeDialog, validateServerPort } from './settings.validation.js';
|
|
|
|
export const router: Router = express.Router();
|
|
|
|
router.post('/welcomedialog', validateWelcomeDialog, async (req: Request, res: Response) => {
|
|
const show = await appState.setShowWelcomeDialog(req.body.show);
|
|
res.status(200).json({ show });
|
|
});
|
|
|
|
router.get('/', (_req: Request, res: Response<Settings>) => {
|
|
const settings = getDataProvider().getSettings();
|
|
const obfuscatedSettings = { ...settings };
|
|
if (settings.editorKey) {
|
|
obfuscatedSettings.editorKey = obfuscate(settings.editorKey);
|
|
}
|
|
|
|
if (settings.operatorKey) {
|
|
obfuscatedSettings.operatorKey = obfuscate(settings.operatorKey);
|
|
}
|
|
|
|
res.status(200).json(obfuscatedSettings);
|
|
});
|
|
|
|
router.post('/', validateSettings, async (req: Request, res: Response<Settings | ErrorResponse>) => {
|
|
try {
|
|
const data = matchedData<Settings>(req);
|
|
const settings = getDataProvider().getSettings();
|
|
|
|
data.version = settings.version;
|
|
|
|
if (!deepEqual(data, settings)) {
|
|
await getDataProvider().setSettings(data);
|
|
sendRefetch(RefetchKey.Settings);
|
|
}
|
|
|
|
res.status(200).json(data);
|
|
} catch (error) {
|
|
const message = getErrorMessage(error);
|
|
res.status(400).json({ message });
|
|
}
|
|
});
|
|
|
|
router.get('/serverport', (_req: Request, res: Response<PortInfo | ErrorResponse>) => {
|
|
try {
|
|
const { port, pendingRestart } = portManager.getPort();
|
|
res.status(200).json({ port, pendingRestart });
|
|
} catch (error) {
|
|
const message = getErrorMessage(error);
|
|
res.status(500).json({ message });
|
|
}
|
|
});
|
|
|
|
router.post('/serverport', validateServerPort, async (req: Request, res: Response<PortInfo | ErrorResponse>) => {
|
|
try {
|
|
const { serverPort } = matchedData<{ serverPort: number }>(req);
|
|
portManager.changePort(serverPort);
|
|
const { port, pendingRestart } = portManager.getPort();
|
|
|
|
res.status(200).json({ port, pendingRestart });
|
|
} catch (error) {
|
|
const message = getErrorMessage(error);
|
|
res.status(400).json({ message });
|
|
}
|
|
});
|