import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { useLocation } from "react-router-dom"; import { Button } from "@/components/buttons/Button"; import { Icons } from "@/components/Icon"; import { IconPill } from "@/components/layout/IconPill"; import { useModal } from "@/components/overlays/Modal"; import { Paragraph } from "@/components/text/Paragraph"; import { Title } from "@/components/text/Title"; import { ScrapingItems, ScrapingSegment } from "@/hooks/useProviderScrape"; import { ErrorContainer, ErrorLayout } from "@/pages/layouts/ErrorLayout"; import { getProviderApiUrls } from "@/utils/proxyUrls"; import { ErrorCardInModal } from "../errors/ErrorCard"; export interface ScrapeErrorPartProps { data: { sources: Record; sourceOrder: ScrapingItems[]; }; } export function ScrapeErrorPart(props: ScrapeErrorPartProps) { const { t } = useTranslation(); const modal = useModal("error"); const location = useLocation(); const error = useMemo(() => { const data = props.data; let str = ""; const apiUrls = getProviderApiUrls(); str += `URL - ${location.pathname}\n`; str += `API - ${apiUrls.length > 0}\n\n`; Object.values(data.sources).forEach((v) => { str += `${v.id}: ${v.status}\n`; if (v.reason) str += `${v.reason}\n`; if (v.error?.message) str += `${v.error.name ?? "unknown"}: ${v.error.message}\n`; else if (v.error) str += `${v.error.toString()}\n`; }); return str; }, [props, location]); return ( {t("player.scraping.notFound.badge")} {t("player.scraping.notFound.title")} {t("player.scraping.notFound.text")}
{error ? ( modal.hide()} error={error} /> ) : null}
); }