diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/Database/userPreferences.ts | 15 | ||||
| -rw-r--r-- | src/routes/api/preferences/+server.ts | 20 | ||||
| -rw-r--r-- | src/routes/user/[user]/+page.svelte | 29 |
3 files changed, 58 insertions, 6 deletions
diff --git a/src/lib/Database/userPreferences.ts b/src/lib/Database/userPreferences.ts index b2cc82f2..1a70811b 100644 --- a/src/lib/Database/userPreferences.ts +++ b/src/lib/Database/userPreferences.ts @@ -15,6 +15,7 @@ interface NewUserPreferences { pinned_hololive_streams?: string[]; hide_missing_badges?: boolean; badge_wall_css?: string; + biography?: string; } export const getUserPreferences = async (userId: number) => { @@ -37,7 +38,7 @@ export const setUserPreferences = async (userId: number, preferences: NewUserPre preferences.pinned_hololive_streams || (userPreferences ? userPreferences.pinned_hololive_streams : []), hide_missing_badges: preferences.hide_missing_badges || false, - biography: userPreferences ? userPreferences.biography : null, + biography: preferences.biography || (userPreferences ? userPreferences.biography : null), badge_wall_css: preferences.badge_wall_css || (userPreferences ? userPreferences.badge_wall_css : '') }, @@ -88,3 +89,15 @@ export const setCSS = async (userId: number, css: string) => { badge_wall_css: css }); }; + +export const setBiography = async (userId: number, biography: string) => { + const userPreferences = await getUserPreferences(userId); + + return await setUserPreferences(userId, { + updated_at: new Date().toISOString(), + pinned_hololive_streams: userPreferences ? userPreferences.pinned_hololive_streams : [], + hide_missing_badges: userPreferences ? userPreferences.hide_missing_badges : false, + badge_wall_css: userPreferences ? userPreferences.badge_wall_css : '', + biography + }); +}; diff --git a/src/routes/api/preferences/+server.ts b/src/routes/api/preferences/+server.ts index 2d51c87a..151af298 100644 --- a/src/routes/api/preferences/+server.ts +++ b/src/routes/api/preferences/+server.ts @@ -1,5 +1,10 @@ import { userIdentity } from '$lib/Data/AniList/identity'; -import { getUserPreferences, toggleHideMissingBadges, setCSS } from '$lib/Database/userPreferences'; +import { + getUserPreferences, + toggleHideMissingBadges, + setCSS, + setBiography +} from '$lib/Database/userPreferences'; const unauthorised = new Response('Unauthorised', { status: 401 }); @@ -28,21 +33,26 @@ export const PUT = async ({ url, cookies, request }) => { }) ).id; - if (url.searchParams.get('toggleHideMissingBadges') !== null) { + if (url.searchParams.get('toggleHideMissingBadges') !== null) return Response.json(await toggleHideMissingBadges(userId), { headers: { 'Access-Control-Allow-Origin': 'https://due.moe' } }); - } - if (url.searchParams.get('badgeWallCSS') !== null) { + 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('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: { diff --git a/src/routes/user/[user]/+page.svelte b/src/routes/user/[user]/+page.svelte index 7cffd647..71d03e37 100644 --- a/src/routes/user/[user]/+page.svelte +++ b/src/routes/user/[user]/+page.svelte @@ -63,6 +63,9 @@ const getBadgeWallCSS = () => (document.getElementById('badgeWallCSS') as HTMLTextAreaElement).value; + const getBiography = () => + (document.getElementById('biography') as HTMLTextAreaElement).value.slice(0, 3000); + // 8.5827814569536423841e0 </script> @@ -211,7 +214,33 @@ <p /> + Biography + + <button + on:click={() => { + if (userData) + fetch(root(`/api/preferences?id=${userData.id}&biography`), { + method: 'PUT', + body: getBiography() + }).then(() => + fetch(root(`/api/preferences?id=${userData?.id}`)) + .then((rawPreferences) => rawPreferences.json()) + .then((JSONpreferences) => (preferences = JSONpreferences)) + ); + }}>Save</button + > + <textarea + value={preferences.biography} + rows="5" + cols="100" + id="biography" + placeholder="Markdown supported!" + /> + + <p /> + Badge Wall Custom CSS + <button on:click={() => { if (userData) |