Spaces:
Running
Running
import { useState, useCallback } from 'react'; | |
export const useNotification = () => { | |
const [notifications, setNotifications] = useState([]); | |
const addNotification = useCallback((notification) => { | |
const id = notification.id || `notification-${Date.now()}-${Math.random()}`; | |
const newNotification = { | |
id, | |
type: 'info', | |
dismissible: true, | |
autoDismiss: false, | |
duration: 5000, | |
showProgress: false, | |
...notification | |
}; | |
setNotifications(prev => [...prev, newNotification]); | |
return id; | |
}, []); | |
const removeNotification = useCallback((id) => { | |
setNotifications(prev => prev.filter(n => n.id !== id)); | |
}, []); | |
const clearAll = useCallback(() => { | |
setNotifications([]); | |
}, []); | |
const updateNotification = useCallback((id, updates) => { | |
setNotifications(prev => | |
prev.map(n => n.id === id ? { ...n, ...updates } : n) | |
); | |
}, []); | |
return { | |
notifications, | |
addNotification, | |
removeNotification, | |
clearAll, | |
updateNotification | |
}; | |
}; |