diff options
Diffstat (limited to 'src/lib/settings.ts')
| -rw-r--r-- | src/lib/settings.ts | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/lib/settings.ts b/src/lib/settings.ts new file mode 100644 index 00000000..b78d83fe --- /dev/null +++ b/src/lib/settings.ts @@ -0,0 +1,31 @@ +import { auth, fd, get, post } from "$lib/utils"; +import { fail } from "@sveltejs/kit"; + +type Error = { + message: string; +}; + +export default async ({ cookies, request }) => { + const form = await fd(request); + + if (form.tab === "pos") { + form.notify = form.notify === "on"; + form.push = form.push === "on"; + form.nip5 = form.nip5 === "on"; + form.prompt = form.prompt === "on"; + form.autowithdraw = form.autowithdraw === "on"; + } + + let user = { ...(await get("/me", auth(cookies))), ...form }; + + try { + ({ user } = await post("/user", user, auth(cookies))); + } catch (e) { + const { message } = e as Error; + return fail(400, { message }); + } + + if (user.language) cookies.set("lang", user.language, { path: "/" }); + + return { user, success: true }; +}; |
