From be07a16fc75c553b1a788452cb0168abedc42766 Mon Sep 17 00:00:00 2001
From: Fuwn
Date: Wed, 3 Jan 2024 15:03:03 -0800
Subject: fix(badges): not found user error
---
src/routes/user/[user]/badges/+page.svelte | 311 +++++++++++++++--------------
1 file changed, 162 insertions(+), 149 deletions(-)
(limited to 'src/routes/user')
diff --git a/src/routes/user/[user]/badges/+page.svelte b/src/routes/user/[user]/badges/+page.svelte
index 51670bdf..68e35177 100644
--- a/src/routes/user/[user]/badges/+page.svelte
+++ b/src/routes/user/[user]/badges/+page.svelte
@@ -20,13 +20,22 @@
let transparent = false;
let confirmDelete = 0;
let selectedBadge: Badge | undefined = undefined;
+ let loadError: string | null = null;
type GroupedBadges = { [key: string]: Badge[] };
onMount(async () => {
// socket.on('badges', (message) => (badges = message));
- badgesPromise = fetch(`/api/badges?id=${(await user(data.username)).id}`);
+ const badger = await user(data.username);
+
+ if (!badger) {
+ loadError = 'User not found.';
+
+ return;
+ }
+
+ badgesPromise = fetch(`/api/badges?id=${badger.id}`);
if (data.user) {
currentUserIdentity = userIdentity(data.user);
@@ -192,163 +201,167 @@
-{#await currentUserIdentity}
- Loading user identity ... 60%
-{:then identity}
- {@const isOwner = identity && identity.name === data.username}
-
- {#if isOwner}
-
- Back to Profile
- •
- {
- if (editMode) selectedBadge = undefined;
-
- editMode = !editMode;
- }}
- >
- {editMode ? 'Disable' : 'Enable'} Edit Mode
-
- •
- screenshot()}>Download
- •
- Dark Mode
- Transparent Background
-
- {/if}
-
- {#if editMode && isOwner}
- {#if error}
- {error}
- {/if}
-
-
-
-
-
-
- {selectedBadge ? 'Update' : 'Add'} Badge
- {#if selectedBadge}
- or
+{#if loadError}
+ {loadError}
+{:else}
+ {#await currentUserIdentity}
+ Loading user identity ... 60%
+ {:then identity}
+ {@const isOwner = identity && identity.name === data.username}
+
+ {#if isOwner}
+
+ Back to Profile
+ •
{
- if (selectedBadge) removeBadge(selectedBadge);
- }}>Delete Badge (click twice)
+ {editMode ? 'Disable' : 'Enable'} Edit Mode
+
+ •
+ screenshot()}>Download
+ •
+ Dark Mode
+ Transparent Background
+
+ {/if}
+
+ {#if editMode && isOwner}
+ {#if error}
+ {error}
{/if}
-
+
+
+
+
- Must be full date and time, defaults to now if any fields empty
-
-
- {/if}
-
- {#await badgesPromise}
- Loading badges ... 40%
- {:then badgesResponse}
- {#if badgesResponse}
- {#await badgesResponse.json()}
- Loading badges ... 80%
- {:then ungroupedBadges}
-
- {#if ungroupedBadges === null}
- {@html nbsp('Loading badges ... 50%')}
- {:else if ungroupedBadges.length === 0}
- {@html nbsp('No badges found for this user.')}
- {:else}
- {@const groupedBadges = Object.entries(groupBadges(ungroupedBadges))}
-
- {#each groupedBadges as [category, badges]}
-
- {category}
-
-
-
-
- {#if groupedBadges[groupedBadges.length - 1][0] !== category}
-
- {/if}
- {/each}
- {/if}
-
- {:catch}
- Could not parse badges
- {/await}
- {:else}
- Loading badges ... 20%
+
+ {selectedBadge ? 'Update' : 'Add'} Badge
+ {#if selectedBadge}
+ or
+ {
+ if (selectedBadge) removeBadge(selectedBadge);
+ }}>Delete Badge (click twice)
+ {/if}
+
+
+ Must be full date and time, defaults to now if any fields empty
+
+
{/if}
- {:catch}
- Could not fetch badges
+
+ {#await badgesPromise}
+ Loading badges ... 40%
+ {:then badgesResponse}
+ {#if badgesResponse}
+ {#await badgesResponse.json()}
+ Loading badges ... 80%
+ {:then ungroupedBadges}
+
+ {#if ungroupedBadges === null}
+ {@html nbsp('Loading badges ... 50%')}
+ {:else if ungroupedBadges.length === 0}
+ {@html nbsp('No badges found for this user.')}
+ {:else}
+ {@const groupedBadges = Object.entries(groupBadges(ungroupedBadges))}
+
+ {#each groupedBadges as [category, badges]}
+
+ {category}
+
+
+
+
+ {#if groupedBadges[groupedBadges.length - 1][0] !== category}
+
+ {/if}
+ {/each}
+ {/if}
+
+ {:catch}
+ Could not parse badges
+ {/await}
+ {:else}
+ Loading badges ... 20%
+ {/if}
+ {:catch}
+ Could not fetch badges
+ {/await}
{/await}
-{/await}
+{/if}