|
import { useCallback } from 'react'; |
|
import { toast as toastify } from 'react-toastify'; |
|
|
|
interface ToastOptions { |
|
type?: 'success' | 'error' | 'info' | 'warning'; |
|
duration?: number; |
|
} |
|
|
|
export function useToast() { |
|
const toast = useCallback((message: string, options: ToastOptions = {}) => { |
|
const { type = 'info', duration = 3000 } = options; |
|
|
|
toastify[type](message, { |
|
position: 'bottom-right', |
|
autoClose: duration, |
|
hideProgressBar: false, |
|
closeOnClick: true, |
|
pauseOnHover: true, |
|
draggable: true, |
|
progress: undefined, |
|
theme: 'dark', |
|
}); |
|
}, []); |
|
|
|
const success = useCallback( |
|
(message: string, options: Omit<ToastOptions, 'type'> = {}) => { |
|
toast(message, { ...options, type: 'success' }); |
|
}, |
|
[toast], |
|
); |
|
|
|
const error = useCallback( |
|
(message: string, options: Omit<ToastOptions, 'type'> = {}) => { |
|
toast(message, { ...options, type: 'error' }); |
|
}, |
|
[toast], |
|
); |
|
|
|
return { toast, success, error }; |
|
} |
|
|