File size: 1,337 Bytes
f0743f4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import { useState } from 'react';
import { useToastContext } from '@librechat/client';
import { useLocalize } from '~/hooks';
export const useDelayedUploadToast = () => {
const localize = useLocalize();
const { showToast } = useToastContext();
const [uploadTimers, setUploadTimers] = useState<Record<string, NodeJS.Timeout>>({});
const determineDelay = (fileSize: number): number => {
const baseDelay = 5000;
const additionalDelay = Math.floor(fileSize / 1000000) * 2000;
return baseDelay + additionalDelay;
};
const startUploadTimer = (fileId: string, fileName: string, fileSize: number) => {
const delay = determineDelay(fileSize);
if (uploadTimers[fileId]) {
clearTimeout(uploadTimers[fileId]);
}
const timer = setTimeout(() => {
const message = localize('com_ui_upload_delay', { 0: fileName });
showToast({
message,
status: 'warning',
duration: 10000,
});
}, delay);
setUploadTimers((prev) => ({ ...prev, [fileId]: timer }));
};
const clearUploadTimer = (fileId: string) => {
if (uploadTimers[fileId]) {
clearTimeout(uploadTimers[fileId]);
setUploadTimers((prev) => {
const { [fileId]: _, ...rest } = prev;
return rest;
});
}
};
return { startUploadTimer, clearUploadTimer };
};
|