aboutsummaryrefslogtreecommitdiff
path: root/src/lib/List/CleanMangaList.svelte
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/List/CleanMangaList.svelte')
-rw-r--r--src/lib/List/CleanMangaList.svelte52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/lib/List/CleanMangaList.svelte b/src/lib/List/CleanMangaList.svelte
new file mode 100644
index 00000000..7d44732a
--- /dev/null
+++ b/src/lib/List/CleanMangaList.svelte
@@ -0,0 +1,52 @@
+<script lang="ts">
+ import type { Media } from '$lib/AniList/media';
+ import ListTitle from './ListTitle.svelte';
+
+ export let media: Media[];
+ export let cleanCache: () => Promise<void>;
+ export let endTime: number;
+ export let lastUpdatedMedia: number;
+ export let updateMedia: (
+ id: number,
+ progress: number | undefined,
+ media: Media[]
+ ) => Promise<void>;
+ export let disableIncrement = false;
+</script>
+
+<ListTitle count={media.length} time={endTime / 1000}>
+ <a href={'#'} title="Force a refresh" on:click={cleanCache}>Force</a>
+</ListTitle>
+
+{#if media.length === 0}
+ <ul>
+ <li>No manga to display. <a href={'#'} on:click={cleanCache}>Force refresh</a></li>
+ </ul>
+{/if}
+
+<ul>
+ {#each media as manga}
+ <li>
+ <a href={`https://anilist.co/manga/${manga.id}`} target="_blank">
+ {#if lastUpdatedMedia === manga.id}
+ <span style="color: lightcoral">
+ {manga.title.english || manga.title.romaji || manga.title.native}
+ </span>
+ {:else}
+ {manga.title.english || manga.title.romaji || manga.title.native}
+ {/if}
+ </a>
+ <span style="opacity: 50%;">|</span>
+ {(manga.mediaListEntry || { progress: 0 }).progress}
+ <a
+ href={'#'}
+ style={disableIncrement ? 'pointer-events: none; opacity: 50%;' : ''}
+ on:click={() =>
+ disableIncrement ? null : updateMedia(manga.id, manga.mediaListEntry?.progress, media)}
+ >
+ +
+ </a>
+ [{manga.episodes || '?'}]
+ </li>
+ {/each}
+</ul>