DweebUI/controllers/preferences.js
2024-07-29 17:49:04 -07:00

71 lines
No EOL
2.3 KiB
JavaScript

import { ServerSettings, User } from '../database/config.js';
import { Alert, getLanguage, Navbar, Capitalize } from '../utils/system.js';
export const Preferences = async function(req,res){
let language = await getLanguage(req);
let Language = Capitalize(language);
let selected = `<option value="${language}" selected hidden>${Language}</option>`;
let user = await User.findOne({ where: { userID: req.session.userID }});
let preferences = JSON.parse(user.preferences);
let hide_profile = preferences.hide_profile;
let checked = '';
if (hide_profile == true) { checked = 'checked'; }
res.render("preferences",{
alert: '',
username: req.session.username,
role: req.session.role,
navbar: await Navbar(req),
selected: selected,
hide_profile: checked,
});
}
export const submitPreferences = async function(req,res){
let { language_input, hidden_input } = req.body;
let trigger_name = req.header('hx-trigger-name');
let trigger_id = req.header('hx-trigger');
// console.log(`trigger_name: ${trigger_name} - trigger_id: ${trigger_id}`);
if (hidden_input == 'on') { hidden_input = true; } else { hidden_input = false; }
let user_preferences = {
language: language_input,
hide_profile: hidden_input,
};
if (language_input != undefined && hidden_input != undefined) {
await User.update({ preferences: JSON.stringify(user_preferences) }, { where: { userID: req.session.userID }});
}
// [HTMX Triggered] Changes the update button.
if(trigger_id == 'preferences'){
res.send(`<button class="btn btn-success" hx-post="/preferences" hx-trigger="load delay:2s" hx-swap="outerHTML" id="submit" hx-target="#submit">Updated</button>`);
return;
} else if (trigger_id == 'submit'){
res.send(`<button class="btn btn-primary" id="submit" form="preferences">Update</button>`);
return;
}
let language = await getLanguage(req);
let Language = Capitalize(language);
let selected = `<option value="${language}" selected hidden>${Language}</option>`;
res.render("preferences",{
alert: '',
username: req.session.username,
role: req.session.role,
navbar: await Navbar(req),
selected: selected,
});
}