diff options
| author | Fuwn <[email protected]> | 2024-08-23 13:51:32 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-08-23 13:51:32 -0700 |
| commit | 5d860ec9675a832dca5e8fd855bca0c9debfb5ef (patch) | |
| tree | 07ce577124d64be0239ab7366a14d7a7c832687e /src/lib/Tools/SequelCatcher/Tool.svelte | |
| parent | fix(AniList): request relation native title (diff) | |
| download | due.moe-5d860ec9675a832dca5e8fd855bca0c9debfb5ef.tar.xz due.moe-5d860ec9675a832dca5e8fd855bca0c9debfb5ef.zip | |
refactor(Tools): SequelCatcher as modules
Diffstat (limited to 'src/lib/Tools/SequelCatcher/Tool.svelte')
| -rw-r--r-- | src/lib/Tools/SequelCatcher/Tool.svelte | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/lib/Tools/SequelCatcher/Tool.svelte b/src/lib/Tools/SequelCatcher/Tool.svelte new file mode 100644 index 00000000..06d635b3 --- /dev/null +++ b/src/lib/Tools/SequelCatcher/Tool.svelte @@ -0,0 +1,80 @@ +<script lang="ts"> + import List from './List.svelte'; + import type { AniListAuthorisation } from '$lib/Data/AniList/identity'; + import userIdentity from '$stores/identity'; + import { type Media, mediaListCollection, Type } from '$lib/Data/AniList/media'; + import LogInRestricted from '$lib/Error/LogInRestricted.svelte'; + import anime from '$stores/anime'; + import identity from '$stores/identity'; + import { onMount } from 'svelte'; + import lastPruneTimes from '$stores/lastPruneTimes'; + import Message from '$lib/Loading/Message.svelte'; + import Skeleton from '$lib/Loading/Skeleton.svelte'; + import Username from '$lib/Layout/Username.svelte'; + + export let user: AniListAuthorisation; + + let mediaList: Promise<Media[]>; + + onMount(async () => { + if (user === undefined || $identity.id === -2) return; + + mediaList = mediaListCollection( + user, + $userIdentity, + Type.Anime, + $anime, + $lastPruneTimes.anime, + { + forcePrune: true, + includeCompleted: true, + all: true, + includeRelations: true + } + ); + }); +</script> + +{#if user === undefined || $identity.id === -2} + <LogInRestricted /> +{:else} + <div class="card"> + {#await mediaList} + <Message message="Cross-checking media ..." /> + + <Skeleton + card={false} + count={8} + pad={false} + height={'0.9rem'} + width={'100%'} + list + grid={false} + /> + {:then mediaListUnchecked} + {#if mediaListUnchecked} + <List {mediaListUnchecked} /> + {:else} + <Message message="Cross-checking media ..." /> + + <Skeleton + card={false} + count={8} + pad={false} + height={'0.9rem'} + width={'100%'} + list + grid={false} + /> + {/if} + {:catch} + <Message message="" loader="ripple" slot withReload fullscreen>Error fetching media.</Message> + {/await} + + <p /> + + <blockquote style="margin: 0 0 0 1.5rem;"> + Thanks to <Username username="sevengirl" /> and <Username username="esthereae" /> for the idea! + </blockquote> + </div> +{/if} |