From 3e9426bab0158a40f3decd32a253f46d9e9f9018 Mon Sep 17 00:00:00 2001 From: subnub Date: Sat, 28 Dec 2024 16:27:04 -0500 Subject: [PATCH] made temp files removed on error, fixed uploads --- .../utils/tempCreateVideoThumbnail.ts | 9 ++++++ .../AddNewDropdown/AddNewDropdown.tsx | 28 +++++++++++++++++-- src/components/Dataform/Dataform.tsx | 2 +- 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/backend/services/chunk-service/utils/tempCreateVideoThumbnail.ts b/backend/services/chunk-service/utils/tempCreateVideoThumbnail.ts index 853dcc5..30911ac 100644 --- a/backend/services/chunk-service/utils/tempCreateVideoThumbnail.ts +++ b/backend/services/chunk-service/utils/tempCreateVideoThumbnail.ts @@ -100,6 +100,14 @@ const tempCreateVideoThumbnail = ( }); }; + const attemptToRemoveTempDirectory = () => { + return new Promise((resolve, reject) => { + fs.unlink(tempDirectory, (err) => { + resolve(!err); + }); + }); + }; + tempWriteStream.on("finish", () => { ffmpeg(tempDirectory, { timeout: 60, @@ -119,6 +127,7 @@ const tempCreateVideoThumbnail = ( }) .on("error", (err, _, stderr) => { console.log("error", err, stderr); + attemptToRemoveTempDirectory(); resolve(file); }) .pipe(thumbnailCipher) diff --git a/src/components/AddNewDropdown/AddNewDropdown.tsx b/src/components/AddNewDropdown/AddNewDropdown.tsx index 1bc9fb3..396981e 100644 --- a/src/components/AddNewDropdown/AddNewDropdown.tsx +++ b/src/components/AddNewDropdown/AddNewDropdown.tsx @@ -8,6 +8,7 @@ import { useUploader } from "../../hooks/files"; import UploadFileIcon from "../../icons/UploadFileIcon"; import CreateFolderIcon from "../../icons/CreateFolderIcon"; import FolderUploadIcon from "../../icons/FolderUploadIcon"; +import Swal from "sweetalert2"; interface AddNewDropdownProps { closeDropdown: () => void; @@ -44,17 +45,38 @@ const AddNewDropdown: React.FC = (props) => { uploadFiles(files); }; + const checkForWebkitDirectory = (items: FileList) => { + for (let i = 0; i < items.length; i++) { + if (!items[i].webkitRelativePath) { + return false; + } + } + return true; + }; + const handleFolderUpload = (e: React.FormEvent) => { e.preventDefault(); props.closeDropdown(); const items = uploadFolderRef.current?.files; - if (!items) return; + if (!items || !items.length) { + Swal.fire({ + title: "No items selected", + icon: "error", + confirmButtonColor: "#3085d6", + confirmButtonText: "Okay", + }); + return; + } - console.log("items", items); + const hasWebkitDirectory = checkForWebkitDirectory(items); - uploadFolder(items); + if (!hasWebkitDirectory) { + uploadFiles(items); + } else { + uploadFolder(items); + } }; const triggerFileUpload = () => { diff --git a/src/components/Dataform/Dataform.tsx b/src/components/Dataform/Dataform.tsx index 87462fa..7490112 100644 --- a/src/components/Dataform/Dataform.tsx +++ b/src/components/Dataform/Dataform.tsx @@ -51,7 +51,7 @@ const DataForm = memo( } else if (!isLoading) { scrollDivRef.current?.scrollTo(0, 0); } - }, [isLoading, navigationMap, window.location.pathname]); + }, [isLoading, navigationMap]); const addFile = useCallback( (files: FileList) => {