import { useState } from 'react'; import { Alert, Button, Toast } from 'react-daisyui'; let gSetToasts; let successTimeoutId; type ToastItem = { text: string; status: 'success' | 'error'; }; export const Toaster = () => { const [toasts, setToasts] = useState({} as { success?: ToastItem; error?: ToastItem }); gSetToasts = setToasts; return (
{[toasts.success, toasts.error].map((toast: ToastItem | undefined, index) => { if (!toast) return null; return (

{toast.text}

); })}
); }; export const successToast = (text: string) => { if (gSetToasts) { gSetToasts({ success: { text, status: 'success' } }); clearTimeout(successTimeoutId); successTimeoutId = setTimeout(() => { clearTimeout(successTimeoutId); gSetToasts((prevToasts) => ({ success: undefined, error: prevToasts.error })); }, 10000); } }; export const errorToast = (text: string) => { if (gSetToasts) { gSetToasts((prevToasts) => ({ success: prevToasts.success, error: { text, status: 'error' } })); } };