From 861c03b85160972431ca9b262345d15edecf9acb Mon Sep 17 00:00:00 2001 From: Fuwn Date: Tue, 24 Oct 2023 17:12:54 -0700 Subject: feat: badge wall --- src/routes/user/[user]/+page.server.ts | 5 + src/routes/user/[user]/+page.svelte | 40 ++++ src/routes/user/[user]/badges/+page.server.ts | 11 + src/routes/user/[user]/badges/+page.svelte | 301 ++++++++++++++++++++++++++ 4 files changed, 357 insertions(+) create mode 100644 src/routes/user/[user]/+page.server.ts create mode 100644 src/routes/user/[user]/+page.svelte create mode 100644 src/routes/user/[user]/badges/+page.server.ts create mode 100644 src/routes/user/[user]/badges/+page.svelte (limited to 'src/routes/user') diff --git a/src/routes/user/[user]/+page.server.ts b/src/routes/user/[user]/+page.server.ts new file mode 100644 index 00000000..76d2d889 --- /dev/null +++ b/src/routes/user/[user]/+page.server.ts @@ -0,0 +1,5 @@ +export const load = ({ params }) => { + return { + username: params.user + }; +}; diff --git a/src/routes/user/[user]/+page.svelte b/src/routes/user/[user]/+page.svelte new file mode 100644 index 00000000..227ba252 --- /dev/null +++ b/src/routes/user/[user]/+page.svelte @@ -0,0 +1,40 @@ + + +{#if userData === null} + Could not load user profile for @{data.username}. + +

+ + Does this user exist? +{:else if userData === undefined} + Loading ... +{:else} +

+ @{userData.name} + • Badge Wall +

+ + This user has watched {(userData.statistics.anime.minutesWatched / 60 / 24).toFixed(1)} days of anime + and read + {((userData.statistics.manga.chaptersRead * 8.58) / 60 / 24).toFixed(1)} days of manga. +{/if} diff --git a/src/routes/user/[user]/badges/+page.server.ts b/src/routes/user/[user]/badges/+page.server.ts new file mode 100644 index 00000000..4be5bcd2 --- /dev/null +++ b/src/routes/user/[user]/badges/+page.server.ts @@ -0,0 +1,11 @@ +import { user } from '$lib/AniList/user.js'; +import { getUserBadges } from '$lib/userBadgesDatabase.js'; + +export const load = async ({ params }) => { + const badges = getUserBadges((await user(params.user)).id); + + return { + username: params.user, + badges + }; +}; diff --git a/src/routes/user/[user]/badges/+page.svelte b/src/routes/user/[user]/badges/+page.svelte new file mode 100644 index 00000000..276bf1ca --- /dev/null +++ b/src/routes/user/[user]/badges/+page.svelte @@ -0,0 +1,301 @@ + + +{#await currentUserIdentity} + Loading ... +{:then identity} + {@const isOwner = identity && identity.name === data.username} +

+ Back to Profile + {#if isOwner} + • + (editMode = !editMode)} + >{editMode ? 'Disable' : 'Enable'} Edit Mode + {/if} +

+ + {#if editMode && isOwner} +

+ Delete mode is enabled. Click on an image to delete it. There is no confirmation, so be + careful! +

+ +

+ + + + Add Badge +

+ {/if} + +
+ {#each data.badges as badge} + {#if editMode} + removeBadge(badge)} id={`badge-${badge.id}`}> + {badge.description} + + {:else} + + {badge.description} + + {/if} + {/each} +
+{/await} + + -- cgit v1.2.3