diff options
| author | Fuwn <[email protected]> | 2023-09-08 00:21:38 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-09-08 00:21:38 -0700 |
| commit | 76a9446c6fcf6a3d482588c95aeec3465c399641 (patch) | |
| tree | 31af01c24b675eb5fd90ba69d122423fe1c7cf18 /src/lib | |
| parent | fix(user): no eager fetch (diff) | |
| download | due.moe-76a9446c6fcf6a3d482588c95aeec3465c399641.tar.xz due.moe-76a9446c6fcf6a3d482588c95aeec3465c399641.zip | |
fix(list): remove unused list
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/List/User/AnimeList.svelte | 186 |
1 files changed, 0 insertions, 186 deletions
diff --git a/src/lib/List/User/AnimeList.svelte b/src/lib/List/User/AnimeList.svelte deleted file mode 100644 index 43608fc9..00000000 --- a/src/lib/List/User/AnimeList.svelte +++ /dev/null @@ -1,186 +0,0 @@ -<script lang="ts"> - /* eslint svelte/no-at-html-tags: "off" */ - - import { Type, type Media, publicMediaListCollection } from '$lib/AniList/media'; - import { onDestroy, onMount } from 'svelte'; - import settings from '../../../stores/settings'; - - export let userId: number; - export let displayUnresolved: boolean; - - let animeLists: Promise<Media[]>; - let startTime: number; - let endTime: number; - - const keyCacher = setInterval(() => { - startTime = performance.now(); - endTime = -1; - animeLists = publicMediaListCollection(userId, Type.Anime); - }, $settings.cacheMinutes * 1000 * 60); - - onMount(async () => { - startTime = performance.now(); - animeLists = publicMediaListCollection(userId, Type.Anime); - }); - - onDestroy(() => { - clearInterval(keyCacher); - }); - - const cleanMedia = (media: Media[], displayUnresolved: boolean) => { - if (media === undefined) { - return []; - } - - const releasingMedia = media.filter((media: Media) => media.status == 'RELEASING'); - const outdatedMedia = releasingMedia.filter((media: Media) => { - return ( - (media.nextAiringEpisode || { episode: 0 }).episode - 1 != - (media.mediaListEntry || { progress: 0 }).progress - ); - }); - let finalMedia = outdatedMedia.map((media: Media) => { - if ((media.nextAiringEpisode || { episode: 0 }).episode - 1 <= 0) { - media.nextAiringEpisode = { episode: -1 }; - } - - return media; - }); - - if (!displayUnresolved) { - finalMedia = finalMedia.filter((media: Media) => media.nextAiringEpisode?.episode !== -1); - } - - finalMedia.sort((a: Media, b: Media) => { - if ($settings.sortByDifference === true) { - const difference = (anime: Media) => { - return ( - (anime.nextAiringEpisode?.episode === -1 - ? 99999 - : anime.nextAiringEpisode?.episode || -1) - - (anime.mediaListEntry || { progress: 0 }).progress - ); - }; - - return difference(a) - difference(b); - } else { - return ( - (a.nextAiringEpisode?.timeUntilAiring || 9999) - - (b.nextAiringEpisode?.timeUntilAiring || 9999) - ); - } - }); - - finalMedia = finalMedia.filter((item, index, array) => { - return ( - array.findIndex((i) => { - return i.id === item.id; - }) === index - ); - }); - - if (!endTime || endTime === -1) { - endTime = performance.now() - startTime; - } - - return finalMedia; - }; - - const airingTime = (anime: Media) => { - const untilAiring = anime.nextAiringEpisode?.timeUntilAiring; - let timeFrame; - - if (untilAiring !== undefined) { - let hours = untilAiring / 3600; - - if (hours >= 24) { - let weeks = Math.floor(Math.floor(hours / 24) / 7); - - if (weeks >= 1) { - weeks = Math.round(weeks); - - timeFrame = `${weeks} week${weeks === 1 ? '' : 's'}`; - } else { - const days = Math.round(Math.floor(hours / 24)); - - timeFrame = `${days} day${days === 1 ? '' : 's'}`; - } - } else { - hours = Math.round(hours); - - timeFrame = `${hours} hour${hours === 1 ? '' : 's'}`; - } - - return `<span style="opacity: 50%">${anime.nextAiringEpisode?.episode} in ${timeFrame}</span>`; - } - - return ''; - }; - - const totalEpisodes = (anime: Media) => { - return anime.episodes === null ? '' : `<span style="opacity: 50%">/${anime.episodes}</span>`; - }; - - const cleanCache = () => { - animeLists = publicMediaListCollection(userId, Type.Anime); - }; -</script> - -{#await animeLists} - <summary>Anime [...] <small style="opacity: 50%">...s</small></summary> - - <ul><li>Loading ...</li></ul> -{:then media} - {@const cleanedMedia = cleanMedia(media, displayUnresolved)} - - <summary - >Anime [{cleanedMedia.length}] - <small style="opacity: 50%">{endTime / 1000}s</small></summary - > - - {#if cleanedMedia.length === 0} - <ul> - <li>No anime to display. <a href={'#'} on:click={cleanCache}>Force refresh</a></li> - </ul> - {/if} - - <ul> - {#each cleanedMedia 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> - {(anime.mediaListEntry || { progress: 0 }).progress}{@html totalEpisodes(anime)} - [{anime.nextAiringEpisode?.episode === -1 - ? '?' - : (anime.nextAiringEpisode?.episode || 1) - 1}] - {@html airingTime(anime)} - </li> - {/each} - </ul> -{:catch} - <summary>Anime [?] <small style="opacity: 50%">0s</small></summary> - - <ul> - <li> - <p> - Media could not be loaded. You might have been <a - href="https://en.wikipedia.org/wiki/Rate_limiting" - target="_blank">rate limited</a - >. - </p> - <p> - Try again in a few minutes. If the problem persists, please contact - <a href="https://anilist.co/user/fuwn" target="_blank">@fuwn</a> on AniList. - </p> - </li> - </ul> -{/await} |