finish export cancel feature

This commit is contained in:
Maze Winther 2026-01-27 16:58:38 +01:00
parent dd463ddc86
commit 0a7dc295f8
1 changed files with 14 additions and 3 deletions

View File

@ -1,6 +1,6 @@
"use client";
import { useState } from "react";
import { useState, useRef } from "react";
import { TransitionTopIcon } from "@hugeicons/core-free-icons";
import { HugeiconsIcon } from "@hugeicons/react";
import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover";
@ -86,10 +86,12 @@ function ExportPopover({
const [isExporting, setIsExporting] = useState(false);
const [progress, setProgress] = useState(0);
const [exportResult, setExportResult] = useState<ExportResult | null>(null);
const cancelRequestedRef = useRef(false);
const handleExport = async () => {
if (!activeProject) return;
cancelRequestedRef.current = false;
setIsExporting(true);
setProgress(0);
setExportResult(null);
@ -101,13 +103,18 @@ function ExportPopover({
fps: activeProject.settings.fps,
includeAudio,
onProgress: ({ progress }) => setProgress(progress),
onCancel: () => false, // TODO: add cancel functionality
onCancel: () => cancelRequestedRef.current,
},
});
setIsExporting(false);
setExportResult(result);
if (result.cancelled) {
setProgress(0);
return;
}
if (result.success && result.buffer) {
const mimeType = getExportMimeType({ format });
const extension = getExportFileExtension({ format });
@ -136,6 +143,10 @@ function ExportPopover({
}
};
const handleCancel = () => {
cancelRequestedRef.current = true;
};
return (
<PopoverContent className="bg-background mr-4 flex w-80 flex-col gap-3">
{exportResult && !exportResult.success ? (
@ -262,7 +273,7 @@ function ExportPopover({
<Button
variant="outline"
className="w-full rounded-md"
onClick={() => {}}
onClick={handleCancel}
>
Cancel
</Button>