|
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', function (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); |
|
} |
|
}); |
|
|