'use client' import { useCallback } from 'react' import { useAppDispatch } from '../redux/hooks' import { addToast, removeToast, ToastType, ToastInput } from '../redux/reducers/toast' export type ToastOptions = Omit export const useToast = () => { const dispatch = useAppDispatch() const toast = useCallback( (type: ToastType, message: string, options?: ToastOptions) => { dispatch(addToast({ type, message, ...options })) }, [dispatch] ) const success = useCallback( (message: string, options?: ToastOptions) => toast('success', message, options), [toast] ) const error = useCallback( (message: string, options?: ToastOptions) => toast('error', message, options), [toast] ) const warning = useCallback( (message: string, options?: ToastOptions) => toast('warning', message, options), [toast] ) const info = useCallback( (message: string, options?: ToastOptions) => toast('info', message, options), [toast] ) const dismiss = useCallback( (id: string) => { dispatch(removeToast(id)) }, [dispatch] ) return { toast, success, error, warning, info, dismiss } }