| import path from 'node:path'; |
| import fs from 'node:fs'; |
|
|
| import express from 'express'; |
| import sanitize from 'sanitize-filename'; |
| import { sync as writeFileAtomicSync } from 'write-file-atomic'; |
|
|
| export const router = express.Router(); |
|
|
| router.post('/save', (request, response) => { |
| if (!request.body || !request.body.name) { |
| return response.sendStatus(400); |
| } |
|
|
| const filename = path.join(request.user.directories.themes, sanitize(`${request.body.name}.json`)); |
| writeFileAtomicSync(filename, JSON.stringify(request.body, null, 4), 'utf8'); |
|
|
| return response.sendStatus(200); |
| }); |
|
|
| router.post('/delete', (request, response) => { |
| if (!request.body || !request.body.name) { |
| return response.sendStatus(400); |
| } |
|
|
| try { |
| const filename = path.join(request.user.directories.themes, sanitize(`${request.body.name}.json`)); |
| if (!fs.existsSync(filename)) { |
| console.error('Theme file not found:', filename); |
| return response.sendStatus(404); |
| } |
| fs.unlinkSync(filename); |
| return response.sendStatus(200); |
| } catch (error) { |
| console.error(error); |
| return response.sendStatus(500); |
| } |
| }); |
|
|