import { userIdentity } from "$lib/Data/AniList/identity"; import { decodeAuthCookieOrThrow } from "$lib/Effect/authCookie"; import { decodeRequestJsonOrThrow } from "$lib/Effect/requestBody"; import { getUserPreferences, toggleHideMissingBadges, setCSS, setBiography, toggleHideAWCBadges, togglePinnedBadgeWallCategory, setPinnedBadgeWallCategories, } from "$lib/Database/SB/User/preferences"; import { Schema } from "effect"; const unauthorised = new Response("Unauthorised", { status: 401 }); export const GET = async ({ url }) => { const preferences = await getUserPreferences( Number(url.searchParams.get("id") || 0), ); return Response.json(preferences ? preferences : {}, { headers: { "Access-Control-Allow-Origin": "https://due.moe", }, }); }; export const PUT = async ({ url, cookies, request }) => { const userCookie = cookies.get("user"); if (!userCookie) return unauthorised; const user = decodeAuthCookieOrThrow(userCookie); const userId = (await userIdentity(user)).id; if (url.searchParams.get("toggleHideMissingBadges") !== null) return Response.json(await toggleHideMissingBadges(userId), { headers: { "Access-Control-Allow-Origin": "https://due.moe", }, }); if (url.searchParams.get("toggleHideAWCBadges") !== null) return Response.json(await toggleHideAWCBadges(userId), { headers: { "Access-Control-Allow-Origin": "https://due.moe", }, }); if (url.searchParams.get("badgeWallCSS") !== null) return Response.json(await setCSS(userId, await request.text()), { headers: { "Access-Control-Allow-Origin": "https://due.moe", }, }); if (url.searchParams.get("toggleCategory") !== null) return Response.json( await togglePinnedBadgeWallCategory( userId, url.searchParams.get("toggleCategory") || "", ), { headers: { "Access-Control-Allow-Origin": "https://due.moe", }, }, ); if (url.searchParams.get("setCategories") !== null) return Response.json( await setPinnedBadgeWallCategories(userId, [ ...(await decodeRequestJsonOrThrow( request, Schema.Array(Schema.String), )), ]), { headers: { "Access-Control-Allow-Origin": "https://due.moe", }, }, ); if (url.searchParams.get("biography") !== null) return Response.json( await setBiography(userId, (await request.text()).slice(0, 3000)), { headers: { "Access-Control-Allow-Origin": "https://due.moe", }, }, ); return Response.json( await getUserPreferences(Number(url.searchParams.get("id") || 0)), { headers: { "Access-Control-Allow-Origin": "https://due.moe", }, }, ); };