aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/settings.ts
blob: 3ce1edd51315d41a5e954e4fd95d8de9b90b88f7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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 === "preferences") {
		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 };
};