gdq-archive/frontend/pages/api/changePreferences.ts

57 lines
1.6 KiB
TypeScript
Raw Normal View History

2021-01-05 15:25:09 +00:00
/**
* Copyright (C) 2019-2021 Carl Kittelberger <icedream@icedream.pw>
2023-01-09 01:33:50 +00:00
*
2021-01-05 15:25:09 +00:00
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
2023-01-09 01:33:50 +00:00
*
2021-01-05 15:25:09 +00:00
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
2023-01-09 01:33:50 +00:00
*
2021-01-05 15:25:09 +00:00
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
2020-08-22 20:25:57 +00:00
import { availableLocales } from '../../util/localization';
import parseBool from '../../util/parseBool';
import withSession from '../../util/session';
export default withSession(async (req, res) => {
if (!req.body) {
res.status(400).json({
success: false,
error: 'bad request',
});
return;
}
if (req.body.volume !== null && req.body.volume !== undefined) {
const volume = parseFloat(req.body.volume);
req.session.set('volume', volume);
}
2020-08-22 20:25:57 +00:00
if (req.body.enableDark) {
const enableDark = parseBool(req.body.enableDark);
req.session.set('enable-dark', enableDark);
}
if (req.body.locale) {
if (!availableLocales.includes(req.body.locale)) {
res.status(400).json({
success: false,
error: 'wanted locale does not exist',
});
}
req.session.set('locale', req.body.locale);
}
await req.session.save();
res.json({
success: true,
});
});