diff --git a/web/src/components/overlay/ExportDialog.tsx b/web/src/components/overlay/ExportDialog.tsx
index c9018c579..577415420 100644
--- a/web/src/components/overlay/ExportDialog.tsx
+++ b/web/src/components/overlay/ExportDialog.tsx
@@ -2,6 +2,7 @@ import { useCallback, useMemo, useState } from "react";
import {
Dialog,
DialogContent,
+ DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
@@ -22,10 +23,13 @@ import { FrigateConfig } from "@/types/frigateConfig";
import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover";
import { TimezoneAwareCalendar } from "./ReviewActivityCalendar";
import { SelectSeparator } from "../ui/select";
-import { isDesktop, isIOS } from "react-device-detect";
+import { isDesktop, isIOS, isMobile } from "react-device-detect";
import { Drawer, DrawerContent, DrawerTrigger } from "../ui/drawer";
import SaveExportOverlay from "./SaveExportOverlay";
import { getUTCOffset } from "@/utils/dateUtil";
+import { baseUrl } from "@/api/baseUrl";
+import { cn } from "@/lib/utils";
+import { GenericVideoPlayer } from "../player/GenericVideoPlayer";
const EXPORT_OPTIONS = [
"1",
@@ -44,8 +48,10 @@ type ExportDialogProps = {
currentTime: number;
range?: TimeRange;
mode: ExportMode;
+ showPreview: boolean;
setRange: (range: TimeRange | undefined) => void;
setMode: (mode: ExportMode) => void;
+ setShowPreview: (showPreview: boolean) => void;
};
export default function ExportDialog({
camera,
@@ -53,10 +59,13 @@ export default function ExportDialog({
currentTime,
range,
mode,
+ showPreview,
setRange,
setMode,
+ setShowPreview,
}: ExportDialogProps) {
const [name, setName] = useState("");
+
const onStartExport = useCallback(() => {
if (!range) {
toast.error("No valid time range selected", { position: "top-center" });
@@ -109,9 +118,16 @@ export default function ExportDialog({
return (
<>
+
setShowPreview(true)}
onSave={() => onStartExport()}
onCancel={() => setMode("none")}
/>
@@ -525,3 +541,44 @@ function CustomTimeSelector({
);
}
+
+type ExportPreviewDialogProps = {
+ camera: string;
+ range?: TimeRange;
+ showPreview: boolean;
+ setShowPreview: (showPreview: boolean) => void;
+};
+
+export function ExportPreviewDialog({
+ camera,
+ range,
+ showPreview,
+ setShowPreview,
+}: ExportPreviewDialogProps) {
+ if (!range) {
+ return null;
+ }
+
+ const source = `${baseUrl}vod/${camera}/start/${range.after}/end/${range.before}/index.m3u8`;
+
+ return (
+
+ );
+}