aboutsummaryrefslogtreecommitdiff
path: root/components/anime/episode.js
diff options
context:
space:
mode:
authorFactiven <[email protected]>2023-10-28 22:50:51 +0700
committerFactiven <[email protected]>2023-10-28 22:50:51 +0700
commita25282429761ff0670a50fd74f8c24bdb38e728c (patch)
tree0cd14840e665f1912842967de7427a31556190e6 /components/anime/episode.js
parentUpdate v4.2.3 (diff)
downloadmoopa-a25282429761ff0670a50fd74f8c24bdb38e728c.tar.xz
moopa-a25282429761ff0670a50fd74f8c24bdb38e728c.zip
Update v4.2.4
Diffstat (limited to 'components/anime/episode.js')
-rw-r--r--components/anime/episode.js72
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;