From a9a9cbf6ea30463b4b6829ad4f2d1bd2ad1568da Mon Sep 17 00:00:00 2001
From: Pas <74743263+Pasithea0@users.noreply.github.com>
Date: Wed, 30 Jul 2025 23:10:23 -0600
Subject: [PATCH] update whole season watched overlay and styles
---
.../overlays/details/ConfirmOverlay.tsx | 57 -------------------
.../overlays/details/EpisodeCarousel.tsx | 47 ++++++++-------
2 files changed, 26 insertions(+), 78 deletions(-)
delete mode 100644 src/components/overlays/details/ConfirmOverlay.tsx
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")}
+
+
+
+
+
+
+