diff options
| author | Factiven <[email protected]> | 2023-10-28 22:50:51 +0700 |
|---|---|---|
| committer | Factiven <[email protected]> | 2023-10-28 22:50:51 +0700 |
| commit | a25282429761ff0670a50fd74f8c24bdb38e728c (patch) | |
| tree | 0cd14840e665f1912842967de7427a31556190e6 /components/anime/episode.js | |
| parent | Update v4.2.3 (diff) | |
| download | moopa-a25282429761ff0670a50fd74f8c24bdb38e728c.tar.xz moopa-a25282429761ff0670a50fd74f8c24bdb38e728c.zip | |
Update v4.2.4
Diffstat (limited to 'components/anime/episode.js')
| -rw-r--r-- | components/anime/episode.js | 72 |
1 files changed, 50 insertions, 22 deletions
diff --git a/components/anime/episode.js b/components/anime/episode.js index a42307f..3650944 100644 --- a/components/anime/episode.js +++ b/components/anime/episode.js @@ -6,6 +6,30 @@ import ThumbnailDetail from "./viewMode/thumbnailDetail"; import ListMode from "./viewMode/listMode"; import { toast } from "sonner"; +function allProvider(response, setMapProviders, setProviderId) { + const getMap = response.find((i) => i?.map === true); + let allProvider = response; + + if (getMap) { + allProvider = response.filter((i) => { + if (i?.providerId === "gogoanime" && i?.map !== true) { + return null; + } + return i; + }); + setMapProviders(getMap?.episodes); + } + + if (allProvider.length > 0) { + const defaultProvider = allProvider.find( + (x) => x.providerId === "gogoanime" || x.providerId === "9anime" + ); + setProviderId(defaultProvider?.providerId || allProvider[0].providerId); // set to first provider id + } + + return allProvider; +} + export default function AnimeEpisode({ info, session, @@ -34,29 +58,12 @@ export default function AnimeEpisode({ info.status === "RELEASING" ? "true" : "false" }${isDub ? "&dub=true" : ""}` ).then((res) => res.json()); - const getMap = response.find((i) => i?.map === true); - let allProvider = response; - if (getMap) { - allProvider = response.filter((i) => { - if (i?.providerId === "gogoanime" && i?.map !== true) { - return null; - } - return i; - }); - setMapProviders(getMap?.episodes); - } - - if (allProvider.length > 0) { - const defaultProvider = allProvider.find( - (x) => x.providerId === "gogoanime" || x.providerId === "9anime" - ); - setProviderId(defaultProvider?.providerId || allProvider[0].providerId); // set to first provider id - } + const providers = allProvider(response, setMapProviders, setProviderId); setView(Number(localStorage.getItem("view")) || 3); setArtStorage(JSON.parse(localStorage.getItem("artplayer_settings"))); - setProviders(allProvider); + setProviders(providers); setLoading(false); }; fetchData(); @@ -172,11 +179,32 @@ export default function AnimeEpisode({ }${isDub ? "&dub=true" : ""}&refresh=true` ); if (!res.ok) { - console.log(res); - toast.error("Something went wrong"); - setProviders([]); + const json = await res.json(); + if (res.status === 429) { + toast.error(json.error); + const resp = await fetch( + `/api/v2/episode/${info.id}?releasing=${ + info.status === "RELEASING" ? "true" : "false" + }${isDub ? "&dub=true" : ""}` + ).then((res) => res.json()); + + if (resp) { + const providers = allProvider( + resp, + setMapProviders, + setProviderId + ); + setProviders(providers); + } + } else { + toast.error("Something went wrong"); + setProviders([]); + } setLoading(false); } else { + const remainingRequests = res.headers.get("X-RateLimit-Remaining"); + toast.success("Remaining requests " + remainingRequests); + const data = await res.json(); const getMap = data.find((i) => i?.map === true) || data[0]; let allProvider = data; |