mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-09 17:33:55 +00:00
7e3aaa8c30
* style: consistent casing on menu * refactor: bundle demo from code * feat: allow uploading custom views
63 lines
1.9 KiB
TypeScript
63 lines
1.9 KiB
TypeScript
import express from 'express';
|
|
import type { Request, Response } from 'express';
|
|
import { type ErrorResponse, RefetchKey } from 'ontime-types';
|
|
import { getErrorMessage } from 'ontime-utils';
|
|
|
|
import { sendRefetch } from '../../adapters/WebsocketAdapter.js';
|
|
import { defaultCss } from '../../bundle/bundledCss.js';
|
|
import { readCssFile, writeCssFile, writeUserTranslation } from './assets.service.js';
|
|
import { validatePostCss, validatePostTranslation } from './assets.validation.js';
|
|
|
|
export const router = express.Router();
|
|
|
|
router.get('/css', async (_req: Request, res: Response<string | ErrorResponse>) => {
|
|
try {
|
|
const data = await readCssFile();
|
|
res.status(200).send(data);
|
|
} catch (error) {
|
|
const message = getErrorMessage(error);
|
|
res.status(500).send({ message });
|
|
}
|
|
});
|
|
|
|
router.post('/css', validatePostCss, async (req: Request, res: Response<never | ErrorResponse>) => {
|
|
const { css } = req.body;
|
|
try {
|
|
await writeCssFile(css);
|
|
sendRefetch(RefetchKey.CssOverride);
|
|
res.status(204).send();
|
|
} catch (error) {
|
|
const message = getErrorMessage(error);
|
|
res.status(500).send({ message });
|
|
}
|
|
});
|
|
|
|
router.post('/css/restore', async (_req: Request, res: Response<string | ErrorResponse>) => {
|
|
try {
|
|
await writeCssFile(defaultCss);
|
|
sendRefetch(RefetchKey.CssOverride);
|
|
res.status(200).send(defaultCss);
|
|
} catch (error) {
|
|
const message = getErrorMessage(error);
|
|
res.status(500).send({ message });
|
|
}
|
|
});
|
|
|
|
router.post('/translations', validatePostTranslation, async (req: Request, res: Response<never | ErrorResponse>) => {
|
|
const { translation } = req.body;
|
|
|
|
if (!translation) {
|
|
res.status(400).send({ message: 'translation payload is required ' });
|
|
return;
|
|
}
|
|
|
|
try {
|
|
await writeUserTranslation(translation);
|
|
sendRefetch(RefetchKey.Translation);
|
|
res.status(204).send();
|
|
} catch (error) {
|
|
const message = getErrorMessage(error);
|
|
res.status(500).send({ message });
|
|
}
|
|
});
|