aboutsummaryrefslogtreecommitdiff
path: root/src/lib/List/Anime/CleanAnimeList.svelte
blob: 18700991526304288bd03a229b47e8b65c969405 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<script lang="ts">
	import settings from '../../../stores/settings';
	import type { Media } from '$lib/AniList/media';
	import { airingTime, cleanCache, totalEpisodes, updateMedia } from '$lib/Media/anime';
	import type { AniListAuthorisation, UserIdentity } from '$lib/AniList/identity';
	import ListTitle from '../ListTitle.svelte';

	export let media: Media[];
	export let title: string;
	export let animeLists: Promise<Media[]>;
	export let user: AniListAuthorisation;
	export let identity: UserIdentity;
	export let endTime: number;
</script>

<ListTitle time={endTime / 1000} count={media.length} custom={title} />

{#if media.length === 0}
	<ul>
		<li>
			No anime to display. <a href={'#'} on:click={() => (animeLists = cleanCache(user, identity))}
				>Force refresh</a
			>
		</li>
	</ul>
{/if}

<ul>
	{#each media as anime}
		<li>
			<a
				href={$settings.linkToAniList
					? `https://anilist.co/anime/${anime.id}`
					: `https://www.livechart.me/search?q=${
							anime.title.native || anime.title.english || anime.title.romaji
					  }`}
				target="_blank"
			>
				{anime.title.english || anime.title.romaji || anime.title.native}
			</a>
			<span style="opacity: 50%;">|</span>
			{#if title !== 'Upcoming Episodes'}
				<!-- {anime.mediaListEntry?.progress || 0}{@html totalEpisodes(anime)} -->
				{(anime.mediaListEntry || { progress: 0 }).progress}{@html totalEpisodes(anime)}
				<a
					href={'#'}
					on:click={() =>
						updateMedia(
							anime.id,
							anime.mediaListEntry?.progress,
							() => (animeLists = cleanCache(user, identity))
						)}>+</a
				>
				{#if !title.includes('Completed')}
					[{anime.nextAiringEpisode?.episode === -1
						? '?'
						: (anime.nextAiringEpisode?.episode || 1) - 1}]
					{@html airingTime(anime)}
				{/if}
			{:else}
				{@html airingTime(anime, true)}
			{/if}
		</li>
	{/each}
</ul>