diff --git a/src/components/player/atoms/UnreleasedEpisodeOverlay.tsx b/src/components/player/atoms/UnreleasedEpisodeOverlay.tsx new file mode 100644 index 00000000..7a66140e --- /dev/null +++ b/src/components/player/atoms/UnreleasedEpisodeOverlay.tsx @@ -0,0 +1,46 @@ +import { useTranslation } from "react-i18next"; + +import { Icon, Icons } from "@/components/Icon"; +import { Flare } from "@/components/utils/Flare"; +import { Transition } from "@/components/utils/Transition"; +import { usePlayerStore } from "@/stores/player/store"; + +import { hasAired } from "../utils/aired"; + +export function UnreleasedEpisodeOverlay() { + const { t } = useTranslation(); + const meta = usePlayerStore((s) => s.meta); + const status = usePlayerStore((s) => s.status); + + if ( + status !== "scraping" || + !meta?.episode?.air_date || + hasAired(meta.episode.air_date) + ) { + return null; + } + + return ( + + + + + +
+ {t("media.unreleased")} +
+
+
+
+ ); +} diff --git a/src/pages/parts/player/PlayerPart.tsx b/src/pages/parts/player/PlayerPart.tsx index 7c1a0b64..5e254332 100644 --- a/src/pages/parts/player/PlayerPart.tsx +++ b/src/pages/parts/player/PlayerPart.tsx @@ -4,6 +4,7 @@ import IosPwaLimitations from "@/components/buttons/IosPwaLimitations"; import { BrandPill } from "@/components/layout/BrandPill"; import { Player } from "@/components/player"; import { SkipIntroButton } from "@/components/player/atoms/SkipIntroButton"; +import { UnreleasedEpisodeOverlay } from "@/components/player/atoms/UnreleasedEpisodeOverlay"; import { Widescreen } from "@/components/player/atoms/Widescreen"; import { useShouldShowControls } from "@/components/player/hooks/useShouldShowControls"; import { useSkipTime } from "@/components/player/hooks/useSkipTime"; @@ -183,6 +184,7 @@ export function PlayerPart(props: PlayerPartProps) { +