From 9ab94f20c200f7e79297b9cbb7d654b8fba67115 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Tue, 2 Apr 2024 22:28:14 -0700 Subject: feat(badges): custom css --- src/routes/api/preferences/+server.ts | 31 +- src/routes/user/[user]/+page.svelte | 17 + src/routes/user/[user]/badges/+page.svelte | 495 +++++++++++++++-------------- 3 files changed, 299 insertions(+), 244 deletions(-) (limited to 'src/routes') diff --git a/src/routes/api/preferences/+server.ts b/src/routes/api/preferences/+server.ts index c69b4096..2d51c87a 100644 --- a/src/routes/api/preferences/+server.ts +++ b/src/routes/api/preferences/+server.ts @@ -1,4 +1,7 @@ -import { getUserPreferences, toggleHideMissingBadges } from '$lib/Database/userPreferences'; +import { userIdentity } from '$lib/Data/AniList/identity'; +import { getUserPreferences, toggleHideMissingBadges, setCSS } from '$lib/Database/userPreferences'; + +const unauthorised = new Response('Unauthorised', { status: 401 }); export const GET = async ({ url }) => { const preferences = await getUserPreferences(Number(url.searchParams.get('id') || 0)); @@ -10,9 +13,31 @@ export const GET = async ({ url }) => { }); }; -export const PUT = async ({ url }) => { +export const PUT = async ({ url, cookies, request }) => { + const userCookie = cookies.get('user'); + + if (!userCookie) return unauthorised; + + const user = JSON.parse(userCookie); + const userId = ( + await userIdentity({ + tokenType: user['token_type'], + expiresIn: user['expires_in'], + accessToken: user['access_token'], + refreshToken: user['refresh_token'] + }) + ).id; + if (url.searchParams.get('toggleHideMissingBadges') !== null) { - return Response.json(await toggleHideMissingBadges(Number(url.searchParams.get('id') || 0)), { + return Response.json(await toggleHideMissingBadges(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' } diff --git a/src/routes/user/[user]/+page.svelte b/src/routes/user/[user]/+page.svelte index d725ad78..28e5fa7d 100644 --- a/src/routes/user/[user]/+page.svelte +++ b/src/routes/user/[user]/+page.svelte @@ -58,6 +58,9 @@ .then((JSONpreferences) => (preferences = JSONpreferences)); } + const getBadgeWallCSS = () => + (document.getElementById('badgeWallCSS') as HTMLTextAreaElement).value; + // 8.5827814569536423841e0 @@ -198,6 +201,20 @@ /> {$locale().user.preferences.hideMissingBadges.title} {$locale().user.preferences.hideMissingBadges.hint} + +

+ + Badge Wall Custom CSS + +