1
0
mirror of https://git.sr.ht/~cadence/bibliogram synced 2025-12-16 11:08:49 +00:00

Settings can be loaded

This commit is contained in:
Cadence Ember
2020-05-06 01:45:56 +12:00
parent 21f98464a5
commit 4d6a3b92f8
5 changed files with 62 additions and 24 deletions

View File

@@ -1,13 +1,16 @@
const constants = require("../../lib/constants")
const {render, redirect} = require("pinski/plugins")
const {getSettings} = require("./utils/getsettings")
const crypto = require("crypto")
const db = require("../../lib/db")
module.exports = [
{
route: "/settings", methods: ["GET"], code: async ({url}) => {
route: "/settings", methods: ["GET"], code: async ({req, url}) => {
const settings = getSettings(req)
// console.log(settings)
const saved = url.searchParams.has("saved")
return render(200, "pug/settings.pug", {saved})
return render(200, "pug/settings.pug", {saved, settings})
}
},
{
@@ -31,6 +34,7 @@ module.exports = [
}
prepared[setting.name] = valueCorrectType
}
// console.log(prepared)
const checkPrepared = db.prepare("SELECT token FROM UserSettings WHERE token = ?")
do {
prepared.token = crypto.randomBytes(16).toString("hex")

View File

@@ -0,0 +1,28 @@
const {parse} = require("cookie")
const constants = require("../../../lib/constants")
const db = require("../../../lib/db")
function addDefaults(input = {}) {
const result = {}
for (const setting of constants.user_settings) {
if (input[setting.name] !== undefined) {
result[setting.name] = input[setting.name]
} else {
result[setting.name] = setting.default
}
}
return result
}
function getSettings(req) {
if (!req.headers.cookie) return addDefaults()
const cookie = parse(req.headers.cookie)
const settings = cookie.settings
if (!settings) return addDefaults()
const row = db.prepare("SELECT * FROM UserSettings WHERE token = ?").get(settings)
if (!row) return addDefaults()
return addDefaults(row)
}
module.exports.getSettings = getSettings