mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-07-22 23:31:12 +02:00
Merge pull request #1110 from mvanhorn/fix/upload-progress-interval-cleanup
fix: clear upload progress interval on unmount
This commit is contained in:
commit
3dba11d532
1 changed files with 13 additions and 4 deletions
|
|
@ -4,7 +4,7 @@ import { useAtom } from "jotai";
|
||||||
import { ChevronDown, Dot, File as FileIcon, FolderOpen, Upload, X } from "lucide-react";
|
import { ChevronDown, Dot, File as FileIcon, FolderOpen, Upload, X } from "lucide-react";
|
||||||
|
|
||||||
import { useTranslations } from "next-intl";
|
import { useTranslations } from "next-intl";
|
||||||
import { type ChangeEvent, useCallback, useMemo, useRef, useState } from "react";
|
import { type ChangeEvent, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
||||||
import { useDropzone } from "react-dropzone";
|
import { useDropzone } from "react-dropzone";
|
||||||
import { toast } from "sonner";
|
import { toast } from "sonner";
|
||||||
import { uploadDocumentMutationAtom } from "@/atoms/documents/document-mutation.atoms";
|
import { uploadDocumentMutationAtom } from "@/atoms/documents/document-mutation.atoms";
|
||||||
|
|
@ -141,6 +141,15 @@ export function DocumentUploadTab({
|
||||||
const { mutate: uploadDocuments, isPending: isUploading } = uploadDocumentMutation;
|
const { mutate: uploadDocuments, isPending: isUploading } = uploadDocumentMutation;
|
||||||
const fileInputRef = useRef<HTMLInputElement>(null);
|
const fileInputRef = useRef<HTMLInputElement>(null);
|
||||||
const folderInputRef = useRef<HTMLInputElement>(null);
|
const folderInputRef = useRef<HTMLInputElement>(null);
|
||||||
|
const progressIntervalRef = useRef<ReturnType<typeof setInterval> | null>(null);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
return () => {
|
||||||
|
if (progressIntervalRef.current) {
|
||||||
|
clearInterval(progressIntervalRef.current);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}, []);
|
||||||
|
|
||||||
const [selectedFolder, setSelectedFolder] = useState<SelectedFolder | null>(null);
|
const [selectedFolder, setSelectedFolder] = useState<SelectedFolder | null>(null);
|
||||||
const [watchFolder, setWatchFolder] = useState(true);
|
const [watchFolder, setWatchFolder] = useState(true);
|
||||||
|
|
@ -329,7 +338,7 @@ export function DocumentUploadTab({
|
||||||
setUploadProgress(0);
|
setUploadProgress(0);
|
||||||
trackDocumentUploadStarted(Number(searchSpaceId), files.length, totalFileSize);
|
trackDocumentUploadStarted(Number(searchSpaceId), files.length, totalFileSize);
|
||||||
|
|
||||||
const progressInterval = setInterval(() => {
|
progressIntervalRef.current = setInterval(() => {
|
||||||
setUploadProgress((prev) => (prev >= 90 ? prev : prev + Math.random() * 10));
|
setUploadProgress((prev) => (prev >= 90 ? prev : prev + Math.random() * 10));
|
||||||
}, 200);
|
}, 200);
|
||||||
|
|
||||||
|
|
@ -342,14 +351,14 @@ export function DocumentUploadTab({
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
onSuccess: () => {
|
onSuccess: () => {
|
||||||
clearInterval(progressInterval);
|
if (progressIntervalRef.current) clearInterval(progressIntervalRef.current);
|
||||||
setUploadProgress(100);
|
setUploadProgress(100);
|
||||||
trackDocumentUploadSuccess(Number(searchSpaceId), files.length);
|
trackDocumentUploadSuccess(Number(searchSpaceId), files.length);
|
||||||
toast(t("upload_initiated"), { description: t("upload_initiated_desc") });
|
toast(t("upload_initiated"), { description: t("upload_initiated_desc") });
|
||||||
onSuccess?.();
|
onSuccess?.();
|
||||||
},
|
},
|
||||||
onError: (error: unknown) => {
|
onError: (error: unknown) => {
|
||||||
clearInterval(progressInterval);
|
if (progressIntervalRef.current) clearInterval(progressIntervalRef.current);
|
||||||
setUploadProgress(0);
|
setUploadProgress(0);
|
||||||
const message = error instanceof Error ? error.message : "Upload failed";
|
const message = error instanceof Error ? error.message : "Upload failed";
|
||||||
trackDocumentUploadFailure(Number(searchSpaceId), message);
|
trackDocumentUploadFailure(Number(searchSpaceId), message);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue