diff --git a/src/components/overlays/details/ConfirmOverlay.tsx b/src/components/overlays/details/ConfirmOverlay.tsx deleted file mode 100644 index 9d73d675..00000000 --- a/src/components/overlays/details/ConfirmOverlay.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { Button } from "@/components/buttons/Button"; -import { - OverlayDisplay, - OverlayPortal, -} from "@/components/overlays/OverlayDisplay"; - -interface ConfirmOverlayProps { - isOpen: boolean; - message: string; - onConfirm: (event: React.MouseEvent) => void; - onCancel: () => void; - confirmButtonTheme?: "white" | "purple" | "secondary" | "danger" | "glass"; - cancelButtonTheme?: "white" | "purple" | "secondary" | "danger" | "glass"; - backdropOpacity?: number; - backdropColor?: string; -} - -export function ConfirmOverlay({ - isOpen, - message, - onConfirm, - onCancel, - confirmButtonTheme = "purple", - cancelButtonTheme = "secondary", - backdropOpacity = 0.5, - backdropColor = "black", -}: ConfirmOverlayProps) { - return ( - -
- -
-

{message}

-
- - -
-
-
-
-
- ); -} diff --git a/src/components/overlays/details/EpisodeCarousel.tsx b/src/components/overlays/details/EpisodeCarousel.tsx index 7be52074..1515282b 100644 --- a/src/components/overlays/details/EpisodeCarousel.tsx +++ b/src/components/overlays/details/EpisodeCarousel.tsx @@ -6,7 +6,7 @@ import { Link } from "react-router-dom"; import { Button } from "@/components/buttons/Button"; import { Dropdown } from "@/components/form/Dropdown"; import { Icon, Icons } from "@/components/Icon"; -import { ConfirmOverlay } from "@/components/overlays/details/ConfirmOverlay"; +import { Modal, ModalCard, useModal } from "@/components/overlays/Modal"; import { hasAired } from "@/components/player/utils/aired"; import { useProgressStore } from "@/stores/progress"; @@ -27,7 +27,6 @@ export function EpisodeCarousel({ const [customSeason, setCustomSeason] = useState(""); const [customEpisode, setCustomEpisode] = useState(""); const [SeasonWatched, setSeasonWatched] = useState(false); - const [isConfirmOpen, setIsConfirmOpen] = useState(false); const [expandedEpisodes, setExpandedEpisodes] = useState<{ [key: number]: boolean; }>({}); @@ -41,6 +40,7 @@ export function EpisodeCarousel({ [key: number]: HTMLParagraphElement | null; }>({}); const updateItem = useProgressStore((s) => s.updateItem); + const confirmModal = useModal("season-watch-confirm"); const handleScroll = (direction: "left" | "right") => { if (!carouselRef.current) return; @@ -211,11 +211,11 @@ export function EpisodeCarousel({ event.preventDefault(); event.stopPropagation(); - setIsConfirmOpen(true); + confirmModal.show(); }; const handleCancel = () => { - setIsConfirmOpen(false); + confirmModal.hide(); }; const currentSeasonEpisodes = episodes.filter( @@ -259,10 +259,10 @@ export function EpisodeCarousel({ } }); - setIsConfirmOpen(false); + confirmModal.hide(); } catch (error) { console.error("Error in handleConfirm:", error); - setIsConfirmOpen(false); + confirmModal.hide(); } }; @@ -337,8 +337,6 @@ export function EpisodeCarousel({ } }); - let toggle: boolean; - if (episodeWatchedStatus.length >= 1) { setSeasonWatched(true); // If no episodes are watched, we want to mark all as watched } else { @@ -410,23 +408,30 @@ export function EpisodeCarousel({ )} + + {/* Season Watched Confirmation */}
- {isConfirmOpen && ( - - )} + + +

+ {SeasonWatched + ? t("media.seasonWatched") + : t("media.seasonUnwatched")} +

+
+ + +
+
+