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}