import express from 'express'; import type { Request, Response, Router } 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: Router = express.Router(); router.get('/css', async (_req: Request, res: Response) => { 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) => { const { css } = req.body; try { await writeCssFile(css); res.status(204).send(); } catch (error) { const message = getErrorMessage(error); res.status(500).send({ message }); } }); router.post('/css/restore', async (_req: Request, res: Response) => { 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) => { const { translation } = req.body; if (!translation) { res.status(400).send({ message: 'translation payload is required ' }); return; } try { await writeUserTranslation(translation); res.status(204).send(); } catch (error) { const message = getErrorMessage(error); res.status(500).send({ message }); } });