1
0
Fork 0
mirror of https://github.com/pawelmalak/flame.git synced 2025-08-02 17:35:17 +02:00

Merge branch 'pawelmalak:master' into master

This commit is contained in:
Matthew Horwood 2022-03-25 15:10:54 +00:00 committed by GitHub
commit 35f5db62f2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
66 changed files with 1309 additions and 222 deletions

View file

@ -1,4 +1,5 @@
const asyncWrapper = require('../../middleware/asyncWrapper');
const ErrorResponse = require('../../utils/ErrorResponse');
const File = require('../../utils/File');
// @desc Add custom search query
@ -8,6 +9,12 @@ const addQuery = asyncWrapper(async (req, res, next) => {
const file = new File('data/customQueries.json');
let content = JSON.parse(file.read());
const prefixes = content.queries.map((q) => q.prefix);
if (prefixes.includes(req.body.prefix)) {
return next(new ErrorResponse('Prefix must be unique', 400));
}
// Add new query
content.queries.push(req.body);
file.write(content, true);

View file

@ -0,0 +1,28 @@
const asyncWrapper = require('../../middleware/asyncWrapper');
const ErrorResponse = require('../../utils/ErrorResponse');
const File = require('../../utils/File');
// @desc Create new theme
// @route POST /api/themes
// @access Private
const addTheme = asyncWrapper(async (req, res, next) => {
const file = new File('data/themes.json');
let content = JSON.parse(file.read());
const themeNames = content.themes.map((t) => t.name);
if (themeNames.includes(req.body.name)) {
return next(new ErrorResponse('Name must be unique', 400));
}
// Add new theme
content.themes.push(req.body);
file.write(content, true);
res.status(201).json({
success: true,
data: req.body,
});
});
module.exports = addTheme;

View file

@ -0,0 +1,22 @@
const asyncWrapper = require('../../middleware/asyncWrapper');
const File = require('../../utils/File');
// @desc Delete theme
// @route DELETE /api/themes/:name
// @access Public
const deleteTheme = asyncWrapper(async (req, res, next) => {
const file = new File('data/themes.json');
let content = JSON.parse(file.read());
content.themes = content.themes.filter((t) => t.name != req.params.name);
file.write(content, true);
const userThemes = content.themes.filter((t) => t.isCustom);
res.status(200).json({
success: true,
data: userThemes,
});
});
module.exports = deleteTheme;

View file

@ -0,0 +1,17 @@
const asyncWrapper = require('../../middleware/asyncWrapper');
const File = require('../../utils/File');
// @desc Get themes file
// @route GET /api/themes
// @access Public
const getThemes = asyncWrapper(async (req, res, next) => {
const file = new File('data/themes.json');
const content = JSON.parse(file.read());
res.status(200).json({
success: true,
data: content.themes,
});
});
module.exports = getThemes;

View file

@ -0,0 +1,6 @@
module.exports = {
getThemes: require('./getThemes'),
addTheme: require('./addTheme'),
deleteTheme: require('./deleteTheme'),
updateTheme: require('./updateTheme'),
};

View file

@ -0,0 +1,32 @@
const asyncWrapper = require('../../middleware/asyncWrapper');
const File = require('../../utils/File');
// @desc Update theme
// @route PUT /api/themes/:name
// @access Public
const updateTheme = asyncWrapper(async (req, res, next) => {
const file = new File('data/themes.json');
let content = JSON.parse(file.read());
let themeIdx = content.themes.findIndex((t) => t.name == req.params.name);
// theme found
if (themeIdx > -1) {
content.themes = [
...content.themes.slice(0, themeIdx),
req.body,
...content.themes.slice(themeIdx + 1),
];
}
file.write(content, true);
const userThemes = content.themes.filter((t) => t.isCustom);
res.status(200).json({
success: true,
data: userThemes,
});
});
module.exports = updateTheme;