aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Tools/SequelCatcher/Tool.svelte
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-08-23 13:51:32 -0700
committerFuwn <[email protected]>2024-08-23 13:51:32 -0700
commit5d860ec9675a832dca5e8fd855bca0c9debfb5ef (patch)
tree07ce577124d64be0239ab7366a14d7a7c832687e /src/lib/Tools/SequelCatcher/Tool.svelte
parentfix(AniList): request relation native title (diff)
downloaddue.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.svelte80
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}