diff --git a/src/lib/content/WatchedDeleteBtn.svelte b/src/lib/content/WatchedDeleteBtn.svelte
new file mode 100644
index 00000000..9d14dbeb
--- /dev/null
+++ b/src/lib/content/WatchedDeleteBtn.svelte
@@ -0,0 +1,65 @@
+
+
+
+
+{#if showConfirmDeleteModalCallback !== undefined}
+ {
+ if (!showConfirmDeleteModalCallback) {
+ notify({
+ type: "error",
+ text: "Somehow the deletion callback doesn't exist anymore so we couldn't delete! Please try again",
+ time: 5000,
+ });
+ return;
+ }
+ if (confirmed) {
+ showConfirmDeleteModalCallback();
+ }
+ showConfirmDeleteModalCallback = undefined;
+ }}
+ />
+{/if}
+
+
diff --git a/src/lib/poster/Poster.svelte b/src/lib/poster/Poster.svelte
index 310b09f4..4c74f5e1 100644
--- a/src/lib/poster/Poster.svelte
+++ b/src/lib/poster/Poster.svelte
@@ -20,6 +20,7 @@
import ExtraDetails from "./ExtraDetails.svelte";
import { buildExtraDetails } from "./lib";
import { decode } from "blurhash";
+ import WatchedDeleteModal from "../watched/WatchedDeleteModal.svelte";
interface Props {
media: Media;
@@ -75,6 +76,10 @@
let containerEl: HTMLDivElement | undefined = $state();
let bhCanvas: HTMLCanvasElement | undefined = $state();
+ // If confirm delete modal should be shown, then this will be
+ // set to a callback.
+ let showConfirmDeleteModalCallback: (() => void) | undefined = $state();
+
const meta:
| {
id: number | undefined;
@@ -162,11 +167,13 @@
});
return;
}
- removeWatched(watched.id).then((removed) => {
- if (removed) {
- watched = undefined;
- }
- });
+ showConfirmDeleteModalCallback = () => {
+ removeWatched(watched.id).then((removed) => {
+ if (removed) {
+ watched = undefined;
+ }
+ });
+ };
return;
}
if (type == watched?.status || !meta?.id) return;
@@ -381,6 +388,26 @@
+{#if showConfirmDeleteModalCallback !== undefined}
+ {
+ if (!showConfirmDeleteModalCallback) {
+ notify({
+ type: "error",
+ text: "Somehow the deletion callback doesn't exist anymore so we couldn't delete! Please try again",
+ time: 5000,
+ });
+ return;
+ }
+ if (confirmed) {
+ showConfirmDeleteModalCallback();
+ }
+ showConfirmDeleteModalCallback = undefined;
+ }}
+ />
+{/if}
+
diff --git a/src/routes/(app)/game/[id]/+page.svelte b/src/routes/(app)/game/[id]/+page.svelte
index b087e0a6..93ec6004 100644
--- a/src/routes/(app)/game/[id]/+page.svelte
+++ b/src/routes/(app)/game/[id]/+page.svelte
@@ -18,6 +18,7 @@
import PosterImage from "@/lib/content/PosterImage.svelte";
import Poster from "@/lib/poster/Poster.svelte";
import ExpandableText from "@/lib/content/ExpandableText.svelte";
+ import WatchedDeleteBtn from "@/lib/content/WatchedDeleteBtn.svelte";
let { data } = $props();
@@ -78,16 +79,6 @@
return false;
}
}
-
- async function deleteWatched() {
- if (game?.watched) {
- if (await removeWatched(game.watched.id)) {
- game.watched = undefined;
- }
- return;
- }
- console.error("deleteWatched: no wlistItem.. can't delete");
- }
@@ -173,13 +164,15 @@
>
-
+ {
+ if (game) {
+ game.watched = undefined;
+ }
+ }}
+ />
{/if}
@@ -277,12 +270,6 @@
margin-left: auto;
}
}
-
- .delete-btn {
- &:hover {
- color: $error;
- }
- }
}
}
}
diff --git a/src/routes/(app)/movie/[id]/+page.svelte b/src/routes/(app)/movie/[id]/+page.svelte
index 096cb1ab..115fefbc 100644
--- a/src/routes/(app)/movie/[id]/+page.svelte
+++ b/src/routes/(app)/movie/[id]/+page.svelte
@@ -32,6 +32,7 @@
import ViewTrailerButton from "@/lib/content/ViewTrailerButton.svelte";
import PosterImage from "@/lib/content/PosterImage.svelte";
import ExpandableText from "@/lib/content/ExpandableText.svelte";
+ import WatchedDeleteBtn from "@/lib/content/WatchedDeleteBtn.svelte";
let { data } = $props();
@@ -112,16 +113,6 @@
return false;
}
}
-
- async function deleteWatched() {
- if (movie?.watched) {
- if (await removeWatched(movie.watched.id)) {
- movie.watched = undefined;
- }
- return;
- }
- console.error("deleteWatched: no wlistItem.. can't delete");
- }
@@ -214,13 +205,15 @@
>
-
+ {
+ if (movie) {
+ movie.watched = undefined;
+ }
+ }}
+ />
{/if}
@@ -359,12 +352,6 @@
margin-left: auto;
}
}
-
- .delete-btn {
- &:hover {
- color: $error;
- }
- }
}
}
}
diff --git a/src/routes/(app)/tv/[id]/+page.svelte b/src/routes/(app)/tv/[id]/+page.svelte
index 2edc6db6..159f27a7 100644
--- a/src/routes/(app)/tv/[id]/+page.svelte
+++ b/src/routes/(app)/tv/[id]/+page.svelte
@@ -33,6 +33,7 @@
import ViewTrailerButton from "@/lib/content/ViewTrailerButton.svelte";
import PosterImage from "@/lib/content/PosterImage.svelte";
import ExpandableText from "@/lib/content/ExpandableText.svelte";
+ import WatchedDeleteBtn from "@/lib/content/WatchedDeleteBtn.svelte";
let { data } = $props();
@@ -113,16 +114,6 @@
return false;
}
}
-
- async function deleteWatched() {
- if (show?.watched) {
- if (await removeWatched(show.watched.id)) {
- show.watched = undefined;
- }
- return;
- }
- console.error("deleteWatched: no wlistItem.. can't delete");
- }
@@ -213,13 +204,15 @@
>
-
+ {
+ if (show) {
+ show.watched = undefined;
+ }
+ }}
+ />
{/if}
@@ -371,12 +364,6 @@
margin-left: auto;
}
}
-
- .delete-btn {
- &:hover {
- color: $error;
- }
- }
}
}
}