aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/graphql/user/schema.graphql4
-rw-r--r--src/routes/user/[user]/+page.gql7
-rw-r--r--src/routes/user/[user]/+page.server.ts5
-rw-r--r--src/routes/user/[user]/+page.svelte29
-rw-r--r--src/routes/user/[user]/+page.ts19
5 files changed, 41 insertions, 23 deletions
diff --git a/src/graphql/user/schema.graphql b/src/graphql/user/schema.graphql
index d4360a39..942ee72d 100644
--- a/src/graphql/user/schema.graphql
+++ b/src/graphql/user/schema.graphql
@@ -1,10 +1,10 @@
type Query {
- User(id: Int!): User
+ User(id: Int!): User!
}
type User {
id: Int!
- badges: [Badge]
+ badges: [Badge]!
}
type Badge {
diff --git a/src/routes/user/[user]/+page.gql b/src/routes/user/[user]/+page.gql
new file mode 100644
index 00000000..182969e2
--- /dev/null
+++ b/src/routes/user/[user]/+page.gql
@@ -0,0 +1,7 @@
+query Profile($id: Int!) {
+ User(id: $id) {
+ badges {
+ id
+ }
+ }
+} \ No newline at end of file
diff --git a/src/routes/user/[user]/+page.server.ts b/src/routes/user/[user]/+page.server.ts
deleted file mode 100644
index 76d2d889..00000000
--- a/src/routes/user/[user]/+page.server.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export const load = ({ params }) => {
- return {
- username: params.user
- };
-};
diff --git a/src/routes/user/[user]/+page.svelte b/src/routes/user/[user]/+page.svelte
index 44e50df7..0369a920 100644
--- a/src/routes/user/[user]/+page.svelte
+++ b/src/routes/user/[user]/+page.svelte
@@ -2,7 +2,7 @@
import settings from '$stores/settings';
import ParallaxImage from '../../../lib/Image/ParallaxImage.svelte';
import { typeSchedule, type ParseResult } from '$lib/Hololive/hololive';
- import { user, type User } from '$lib/Data/AniList/user';
+ import { type User } from '$lib/Data/AniList/user';
import HeadTitle from '$lib/Home/HeadTitle.svelte';
import Message from '$lib/Loading/Message.svelte';
import { estimatedDayReading } from '$lib/Media/Manga/time';
@@ -38,12 +38,9 @@
username
}
}).user.profile.badges;
+ $: ({ Profile } = data);
- onMount(() => {
- user(data.username, /^\d+$/.test(data.username))
- .then((profile) => (userData = profile))
- .catch(() => (error = true));
- });
+ onMount(() => (userData = data.userData));
const handleDragStart = (
event: DragEvent & { currentTarget: EventTarget & HTMLDivElement },
@@ -252,19 +249,19 @@
<p />
{/if}
- {#await fetch(root(`/api/badges?id=${userData.id}`))}
+ {#if $Profile.fetching}
{displayBadges(userData.name, '...')}
- {:then badges}
- {#await badges.json()}
- {displayBadges(userData.name, '...')}
- {:then badges}
- {displayBadges(userData.name, badges.length)}
- {:catch}
+ {:else if $Profile.data}
+ {@const badges = $Profile.data.User.badges.length}
+
+ {#if badges}
+ {displayBadges(userData.name, badges)}
+ {:else}
{displayBadges(userData.name, '?')}
- {/await}
- {:catch}
+ {/if}
+ {:else}
{displayBadges(userData.name, '?')}
- {/await}
+ {/if}
</div>
</div>
</div>
diff --git a/src/routes/user/[user]/+page.ts b/src/routes/user/[user]/+page.ts
new file mode 100644
index 00000000..9d498404
--- /dev/null
+++ b/src/routes/user/[user]/+page.ts
@@ -0,0 +1,19 @@
+import { load_Profile } from "$houdini"
+import { user } from "$lib/Data/AniList/user"
+import type { LoadEvent } from "@sveltejs/kit"
+
+export const load = async (event: LoadEvent) => {
+ const username = event.params.user as string
+ const userData = (await
+ user(username, /^\d+$/.test(username)))
+
+ return {
+ ...(await load_Profile({
+ event, variables: {
+ id: userData.id,
+ }
+ })),
+ username,
+ userData
+ }
+} \ No newline at end of file