import { notificationStore } from '../stores' export type Notification = { id?: string msg?: string type?: NotificationType timeout?: number } type NotificationType = 'success' | 'error' | 'info' | 'warning' export const removeNotification: (id: string) => void = id => { notificationStore.update(all => all.filter(notification => notification.id !== id) ) } export const addNotification: ( msg: string, type?: NotificationType, timeout?: number ) => void = (msg, type = 'info', timeout = 5000) => { // uuid for each notification const id = crypto.randomUUID() // adding new notifications to the bottom of the list so they stack from bottom to top notificationStore.update(rest => [ ...rest, { id, msg, type, timeout, } ]) // removing the notification after a specified timeout const timer = setTimeout(() => { removeNotification(id) clearTimeout(timer) }, timeout) // return the id return id }