aboutsummaryrefslogtreecommitdiff
path: root/src/lib/User
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-10-06 03:49:02 -0700
committerFuwn <[email protected]>2024-10-06 03:49:02 -0700
commitded5e5bf084ce424c05066ad9c6f418672345aac (patch)
treeb620bf9098ad4bb3139a0348cdb5270f2621ac5d /src/lib/User
parentfeat(badges): move badge operations to graphql (diff)
downloaddue.moe-ded5e5bf084ce424c05066ad9c6f418672345aac.tar.xz
due.moe-ded5e5bf084ce424c05066ad9c6f418672345aac.zip
feat(badges): use preferences graphql api
Diffstat (limited to 'src/lib/User')
-rw-r--r--src/lib/User/BadgeWall/AWC.svelte68
-rw-r--r--src/lib/User/BadgeWall/Badges.svelte4
-rw-r--r--src/lib/User/BadgeWall/FallbackBadge.svelte4
-rw-r--r--src/lib/User/BadgeWall/badge.ts20
4 files changed, 49 insertions, 47 deletions
diff --git a/src/lib/User/BadgeWall/AWC.svelte b/src/lib/User/BadgeWall/AWC.svelte
index c2268510..ba8a22ea 100644
--- a/src/lib/User/BadgeWall/AWC.svelte
+++ b/src/lib/User/BadgeWall/AWC.svelte
@@ -1,14 +1,14 @@
<script lang="ts">
import type { AWCBadgesGroup } from '$lib/Data/awc';
- import type { UserPreferences } from '$lib/Database/SB/User/preferences';
import { cdn, thumbnail } from '$lib/Utility/image';
+ import type { Preferences } from '../../../graphql/$types';
import FallbackBadge from './FallbackBadge.svelte';
import './badges.css';
export let awcPromise: Promise<Response>;
export let categoryFilter: string | null;
export let isOwner: boolean;
- export let preferences: UserPreferences;
+ export let preferences: Preferences;
const awcBadgesGrouped = (awcResponse: string): AWCBadgesGroup[] => {
return Array.from(
@@ -60,39 +60,41 @@
</script>
{#await awcPromise then badges}
- {#await badges.clone().text() then text}
- {@const parsedBadges = awcBadgesGrouped(text)}
+ {#if badges}
+ {#await badges.clone().text() then text}
+ {@const parsedBadges = awcBadgesGrouped(text)}
- {#if parsedBadges.length > 0}
- {#each parsedBadges as group}
- <details open={categoryFilter || isOwner ? false : true}>
- <summary>
- Anime Watching Club <span class="opaque">|</span>
- {group.group}
- </summary>
+ {#if parsedBadges.length > 0}
+ {#each parsedBadges as group}
+ <details open={categoryFilter || isOwner ? false : true}>
+ <summary>
+ Anime Watching Club <span class="opaque">|</span>
+ {group.group}
+ </summary>
- <p />
+ <p />
- <div class="badges">
- {#each group.badges as badge, index}
- <div id={`badge-${index}`}>
- <FallbackBadge
- {badge}
- source={cdn(thumbnail(badge.image))}
- alternative={badge.description}
- fallback={thumbnail(badge.image)}
- hideOnError={preferences.hide_missing_badges}
- awc
- {index}
- {preferences}
- />
- </div>
- {/each}
- </div>
- </details>
+ <div class="badges">
+ {#each group.badges as badge, index}
+ <div id={`badge-${index}`}>
+ <FallbackBadge
+ {badge}
+ source={cdn(thumbnail(badge.image))}
+ alternative={badge.description}
+ fallback={thumbnail(badge.image)}
+ hideOnError={preferences.hide_missing_badges}
+ awc
+ {index}
+ {preferences}
+ />
+ </div>
+ {/each}
+ </div>
+ </details>
- <p />
- {/each}
- {/if}
- {/await}
+ <p />
+ {/each}
+ {/if}
+ {/await}
+ {/if}
{/await}
diff --git a/src/lib/User/BadgeWall/Badges.svelte b/src/lib/User/BadgeWall/Badges.svelte
index 127c98c8..c4da3118 100644
--- a/src/lib/User/BadgeWall/Badges.svelte
+++ b/src/lib/User/BadgeWall/Badges.svelte
@@ -6,14 +6,14 @@
import FallbackImage from '$lib/Image/FallbackImage.svelte';
import { cdn, thumbnail } from '$lib/Utility/image';
import FallbackBadge from './FallbackBadge.svelte';
- import type { UserPreferences } from '$lib/Database/SB/User/preferences';
+ import type { Preferences } from '../../../graphql/$types';
import type { IndexedBadge } from './badge';
export let ungroupedBadges: IndexedBadge[];
export let groupedBadges: [string, IndexedBadge[]][];
export let categoryFilter: string | null;
export let editMode: boolean;
- export let preferences: UserPreferences | undefined;
+ export let preferences: Preferences | undefined;
export let selectedBadge: IndexedBadge | undefined = undefined;
</script>
diff --git a/src/lib/User/BadgeWall/FallbackBadge.svelte b/src/lib/User/BadgeWall/FallbackBadge.svelte
index 2f0bdabd..0e690443 100644
--- a/src/lib/User/BadgeWall/FallbackBadge.svelte
+++ b/src/lib/User/BadgeWall/FallbackBadge.svelte
@@ -7,7 +7,7 @@
import { databaseTimeToDate } from '../../Utility/time';
import { cubicOut } from 'svelte/easing';
import { dev } from '$app/environment';
- import type { UserPreferences } from '$lib/Database/SB/User/preferences';
+ import type { Preferences } from '../../../graphql/$types';
export let source: string | null | undefined;
export let alternative: string | null | undefined;
@@ -21,7 +21,7 @@
export let selectedBadge: Badge | null = null;
export let awc = false;
export let index: number | null = null;
- export let preferences: UserPreferences | undefined;
+ export let preferences: Preferences | undefined;
let replaceCount = 0;
let badgeReference: HTMLImageElement;
diff --git a/src/lib/User/BadgeWall/badge.ts b/src/lib/User/BadgeWall/badge.ts
index 834c0362..0c15b9ca 100644
--- a/src/lib/User/BadgeWall/badge.ts
+++ b/src/lib/User/BadgeWall/badge.ts
@@ -1,18 +1,18 @@
-import type { Badge } from '$lib/Database/SB/User/badges';
+import type { Badge } from "../../../graphql/user/$types";
export interface IndexedBadge extends Badge {
- index: number;
+ index: number;
}
export const classifyDesignerName = (designer: string) => {
- let name = designer;
- const anilistUser = designer.match(/https?:\/\/anilist\.co\/user\/([^/]+)\/?/);
+ let name = designer;
+ const anilistUser = designer.match(/https?:\/\/anilist\.co\/user\/([^/]+)\/?/);
- if (anilistUser) {
- name = `@${anilistUser[1]}`;
- } else if (!designer.toLowerCase().startsWith('@')) {
- name = `@${designer}`;
- }
+ if (anilistUser) {
+ name = `@${anilistUser[1]}`;
+ } else if (!designer.toLowerCase().startsWith('@')) {
+ name = `@${designer}`;
+ }
- return name;
+ return name;
};