diff options
Diffstat (limited to 'src/lib/Media/links.ts')
| -rw-r--r-- | src/lib/Media/links.ts | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/lib/Media/links.ts b/src/lib/Media/links.ts index 4385d348..1e65f82f 100644 --- a/src/lib/Media/links.ts +++ b/src/lib/Media/links.ts @@ -1,10 +1,14 @@ import type { Media } from '$lib/AniList/media'; export const outboundLink = ( - media: Media, + media: Media | null, type: 'anime' | 'manga', - setting: 'anilist' | 'livechartme' | 'animeschedule' | 'myanimelist' + setting: 'anilist' | 'livechartme' | 'animeschedule' | 'myanimelist', + search = false, + title: string | null = null ) => { + media = media as Media; + if (type === 'manga') switch (setting) { case 'livechartme': @@ -22,24 +26,31 @@ export const outboundLink = ( else switch (setting) { case 'anilist': - return `https://anilist.co/${type}/${media.id}`; + return search + ? `https://anilist.co/search?search=${encodeURIComponent(title || '')}` + : `https://anilist.co/${type}/${media.id}`; case 'livechartme': return `https://www.livechart.me/search?q=${( + title || media.title.native || media.title.english || media.title.romaji ).replace(/ /g, '+')}`; case 'animeschedule': return `https://animeschedule.net/shows?q=${( + title || media.title.native || media.title.english || media.title.romaji ).replace(/ /g, '+')}`; - case 'myanimelist': - return media.idMal + case 'myanimelist': { + return search + ? `https://myanimelist.net/anime.php?q=${title}&cat=anime` + : media.idMal ? `https://myanimelist.net/anime/${media.idMal}` : `https://myanimelist.net/anime.php?q=${ media.title.native || media.title.english || media.title.romaji }&cat=anime`; + } } }; |