import { useMemo } from "react"; import { Trans, useTranslation } from "react-i18next"; import { Button } from "@/components/buttons/Button"; import { Icon, Icons } from "@/components/Icon"; import { OverlayPage } from "@/components/overlays/OverlayPage"; import { Menu } from "@/components/player/internals/ContextMenu"; import { convertSubtitlesToSrtDataurl } from "@/components/player/utils/captions"; import { useOverlayRouter } from "@/hooks/useOverlayRouter"; import { usePlayerStore } from "@/stores/player/store"; function useDownloadLink() { const source = usePlayerStore((s) => s.source); const currentQuality = usePlayerStore((s) => s.currentQuality); const url = useMemo(() => { if (source?.type === "file" && currentQuality) return source.qualities[currentQuality]?.url ?? null; if (source?.type === "hls") return source.url; return null; }, [source, currentQuality]); return url; } function StyleTrans(props: { k: string }) { return ( , ios_share: ( ), ios_files: ( ), }} /> ); } export function DownloadView({ id }: { id: string }) { const router = useOverlayRouter(id); const { t } = useTranslation(); const downloadUrl = useDownloadLink(); const sourceType = usePlayerStore((s) => s.source?.type); const selectedCaption = usePlayerStore((s) => s.caption?.selected); const subtitleUrl = useMemo( () => selectedCaption ? convertSubtitlesToSrtDataurl(selectedCaption?.srtData) : null, [selectedCaption], ); if (!downloadUrl) return null; return ( <> router.navigate("/")}> {t("player.menus.downloads.title")}
{sourceType === "hls" ? ( <> ) : ( <> router.navigate("/download/pc")}> {t("player.menus.downloads.onPc.title")} router.navigate("/download/ios")} > {t("player.menus.downloads.onIos.title")} router.navigate("/download/android")} > {t("player.menus.downloads.onAndroid.title")} )}
); } export function CantDownloadView({ id }: { id: string }) { const router = useOverlayRouter(id); const { t } = useTranslation(); return ( <> router.navigate("/")}> {t("player.menus.downloads.title")} ); } function AndroidExplanationView({ id }: { id: string }) { const router = useOverlayRouter(id); const { t } = useTranslation(); return ( <> router.navigate("/download")}> {t("player.menus.downloads.onAndroid.shortTitle")} ); } function PCExplanationView({ id }: { id: string }) { const router = useOverlayRouter(id); const { t } = useTranslation(); return ( <> router.navigate("/download")}> {t("player.menus.downloads.onPc.shortTitle")} ); } function IOSExplanationView({ id }: { id: string }) { const router = useOverlayRouter(id); return ( <> router.navigate("/download")}> ); } export function DownloadRoutes({ id }: { id: string }) { return ( <> ); }