Press n or j to go to the next uncovered block, b, p or k for the previous block.
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 48 49 50 | 19x 19x 19x 151x 151x 151x 151x 151x 5x 5x 5x 151x | import { useCallback, useId } from "react"; import ToastContext from "context/ToastContext"; import { useCustomContext } from "hooks"; import type { IToast, UseToast } from "types/toast"; export function useToast(): UseToast { const { toasts, setToasts } = useCustomContext(ToastContext); const id = useId(); const removeToast: UseToast["removeToast"] = useCallback( (toastId) => { const timeOut = toasts.find((toast) => toast.id === toastId)?.timeOut; Iif (timeOut) { clearTimeout(timeOut); } setToasts((allToast) => { return allToast.filter((toast) => toast.id !== toastId); }); }, [setToasts, toasts] ); const addToast: UseToast["addToast"] = useCallback( (toast) => { const displayTime = toast.displayTime ?? 10000; const newToast: IToast = { ...toast, id, displayTime, timeOut: setTimeout(() => { removeToast(newToast.id); }, displayTime), }; setToasts([newToast]); }, [id, setToasts, removeToast] ); return { toasts, addToast, removeToast, }; } |