aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/Database/userPreferences.ts15
-rw-r--r--src/routes/api/preferences/+server.ts20
-rw-r--r--src/routes/user/[user]/+page.svelte29
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)