Download client/src/hooks/Files/useDelayedUploadToast.ts from Zhitomir/chat: direct link, hf CLI and curl.
- Browser
- Download file 1.34 kB
-
https://huggingface.co/spaces/Zhitomir/chat/resolve/main/client/src/hooks/Files/useDelayedUploadToast.ts
- Command line
-
hf download hf://spaces/Zhitomir/chat/client/src/hooks/Files/useDelayedUploadToast.ts
-
curl -L -o useDelayedUploadToast.ts https://huggingface.co/spaces/Zhitomir/chat/resolve/main/client/src/hooks/Files/useDelayedUploadToast.ts
1.34 kB
| import { useState } from 'react'; | |
| import { useToastContext } from '~/Providers/ToastContext'; | |
| import useLocalize from '~/hooks/useLocalize'; | |
| 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', fileName); | |
| showToast({ | |
| message, | |
| status: 'warning', | |
| duration: 7000, | |
| }); | |
| }, 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 }; | |
| }; | |