diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/Data/AniList/following.ts | 6 | ||||
| -rw-r--r-- | src/lib/Data/AniList/forum.ts | 6 | ||||
| -rw-r--r-- | src/lib/List/Manga/MangaListTemplate.svelte | 2 | ||||
| -rw-r--r-- | src/lib/Tools/BirthdaysTemplate.svelte | 2 | ||||
| -rw-r--r-- | src/lib/Tools/Tracker/Tool.svelte | 7 | ||||
| -rw-r--r-- | src/routes/user/[user]/+page.svelte | 4 | ||||
| -rw-r--r-- | src/routes/user/[user]/+page.ts | 2 | ||||
| -rw-r--r-- | src/routes/user/[user]/badges/+page.svelte | 25 | ||||
| -rw-r--r-- | src/routes/user/[user]/badges/+page.ts | 2 |
9 files changed, 45 insertions, 11 deletions
diff --git a/src/lib/Data/AniList/following.ts b/src/lib/Data/AniList/following.ts index b4772afa..bec1f53c 100644 --- a/src/lib/Data/AniList/following.ts +++ b/src/lib/Data/AniList/following.ts @@ -33,7 +33,11 @@ const followingPage = async (page: number, id: number): Promise<FollowingPage> = export const followers = async (name: string): Promise<Partial<User>[]> => { const activities = []; let page = 1; - const id = (await user(name)).id; + const userData = await user(name); + + if (!userData) throw new Error(`User not found: ${name}`); + + const id = userData.id; let currentPage = await followingPage(page, id); for (const activity of currentPage.data.Page.following) activities.push(activity); diff --git a/src/lib/Data/AniList/forum.ts b/src/lib/Data/AniList/forum.ts index b2467c9e..c8514fe1 100644 --- a/src/lib/Data/AniList/forum.ts +++ b/src/lib/Data/AniList/forum.ts @@ -47,7 +47,11 @@ const threadPage = async (page: number, userId: number): Promise<ThreadPage> => export const threads = async (username: string): Promise<Thread[]> => { const allThreads = []; - const userId = (await user(username)).id; + const userData = await user(username); + + if (!userData) throw new Error(`User not found: ${username}`); + + const userId = userData.id; let page = 1; let currentPage = await threadPage(page, userId); diff --git a/src/lib/List/Manga/MangaListTemplate.svelte b/src/lib/List/Manga/MangaListTemplate.svelte index 3fee9f6a..16665d56 100644 --- a/src/lib/List/Manga/MangaListTemplate.svelte +++ b/src/lib/List/Manga/MangaListTemplate.svelte @@ -61,7 +61,7 @@ `last${due ? '' : 'Completed'}MangaListLength` )) as number | null; - if (lastStoredList) lastListSize = parseInt(lastStoredList); + if (lastStoredList) lastListSize = parseInt(String(lastStoredList)); } startTime = performance.now(); diff --git a/src/lib/Tools/BirthdaysTemplate.svelte b/src/lib/Tools/BirthdaysTemplate.svelte index 951de5cf..daf4c5af 100644 --- a/src/lib/Tools/BirthdaysTemplate.svelte +++ b/src/lib/Tools/BirthdaysTemplate.svelte @@ -44,7 +44,7 @@ <Skeleton grid={true} count={100} width="150px" height="170px" /> {:then birthdays} {@const todaysBirthdays = birthdays.filter( - (birthday) => birthday.month === month && birthday.day === day + (birthday: { month: number; day: number }) => birthday.month === month && birthday.day === day )} <p> diff --git a/src/lib/Tools/Tracker/Tool.svelte b/src/lib/Tools/Tracker/Tool.svelte index 6c7fbf1c..a3705fbe 100644 --- a/src/lib/Tools/Tracker/Tool.svelte +++ b/src/lib/Tools/Tracker/Tool.svelte @@ -97,7 +97,12 @@ value={entry.progress} size={3} onchange={(e) => - adjustEntry(entry.id, e.target ? e.target.value || entry.progress : entry.progress)} + adjustEntry( + entry.id, + e.target + ? Number((e.target as HTMLInputElement).value) || entry.progress + : entry.progress + )} /> <span class="entry-adjust"> diff --git a/src/routes/user/[user]/+page.svelte b/src/routes/user/[user]/+page.svelte index 7f33f170..eeeebf91 100644 --- a/src/routes/user/[user]/+page.svelte +++ b/src/routes/user/[user]/+page.svelte @@ -26,7 +26,9 @@ export let data; $: ({ Profile } = data); - $: preferences = $Profile.fetching ? undefined : ($Profile.data?.User.preferences as Preferences); + $: preferences = $Profile.fetching + ? undefined + : ($Profile.data?.User?.preferences as Preferences | undefined); const setCategoriesQuery = graphql(` mutation SetCategories($categories: [String!]!) { diff --git a/src/routes/user/[user]/+page.ts b/src/routes/user/[user]/+page.ts index e44f06aa..ca16077f 100644 --- a/src/routes/user/[user]/+page.ts +++ b/src/routes/user/[user]/+page.ts @@ -6,6 +6,8 @@ export const load = async (event: LoadEvent) => { const username = event.params.user as string; const userData = await user(username, /^\d+$/.test(username)); + if (!userData) throw new Error(`User not found: ${username}`); + return { ...(await load_Profile({ event, diff --git a/src/routes/user/[user]/badges/+page.svelte b/src/routes/user/[user]/badges/+page.svelte index 2abf8377..69b74917 100644 --- a/src/routes/user/[user]/badges/+page.svelte +++ b/src/routes/user/[user]/badges/+page.svelte @@ -31,7 +31,7 @@ $: ({ BadgeWallUser } = data); $: preferences = $BadgeWallUser.fetching ? undefined - : ($BadgeWallUser.data?.User.preferences as Preferences); + : ($BadgeWallUser.data?.User?.preferences as Preferences | undefined); $: if (browser && preferences && preferences.badge_wall_css) { const sanitise = (css: string) => @@ -191,7 +191,7 @@ let importLinks = false; let importCategory = ''; let importReplies = false; - let badger: Partial<User>; + let badger: Partial<User> | null; let migrateMode = false; let hideMode = false; const authorised = authorisedJson.includes($identity.id); @@ -202,10 +202,17 @@ type GroupedBadges = { [key: string]: IndexedBadge[] }; - const setShadowHide = () => + const setShadowHide = () => { + if (!badger) { + loadError = 'Something went wrong. Try refreshing.'; + + return; + } + shadowHideBadgeQuery.mutate({ id: badger.id as number }); + }; onMount(async () => { if (browser && (await localforage.getItem('badgeWallNoticeDismissed'))) noticeDismissed = true; @@ -217,8 +224,8 @@ } : await user(data.username); - if (!isId && !badger) { - loadError = 'User not found.'; + if (!badger) { + loadError = "Couldn't find this user."; return; } @@ -506,6 +513,12 @@ const shadowHideBadge = () => { if (!selectedBadge && !authorised) return; + if (!badger) { + loadError = 'Something went wrong. Try refreshing.'; + + return; + } + shadowHideBadgeQuery .mutate({ id: badger.id as number, @@ -528,6 +541,8 @@ <Message message="Loading badges ..." /> <Skeleton grid={true} count={100} width="150px" height="170px" /> + {:else if !$BadgeWallUser.data.User} + <Message message="No badges yet." /> {:else} {@const ungroupedBadges = castBadgesToIndexedBadges($BadgeWallUser.data.User.badges)} {@const isBadgeSelected = diff --git a/src/routes/user/[user]/badges/+page.ts b/src/routes/user/[user]/badges/+page.ts index bd13fdc4..db70d16c 100644 --- a/src/routes/user/[user]/badges/+page.ts +++ b/src/routes/user/[user]/badges/+page.ts @@ -6,6 +6,8 @@ export const load = async (event: LoadEvent) => { const username = event.params.user as string; const userData = await user(username, /^\d+$/.test(username)); + if (!userData) throw new Error(`User not found: ${username}`); + return { ...(await load_BadgeWallUser({ event, |