v0.0.01b
This commit is contained in:
24
src/store/useToast.ts
Normal file
24
src/store/useToast.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import { create } from 'zustand';
|
||||
|
||||
interface ToastItem {
|
||||
id: number;
|
||||
message: string;
|
||||
}
|
||||
|
||||
interface ToastState {
|
||||
toasts: ToastItem[];
|
||||
show: (message: string) => void;
|
||||
dismiss: (id: number) => void;
|
||||
}
|
||||
|
||||
let counter = 0;
|
||||
|
||||
export const useToastStore = create<ToastState>((set, get) => ({
|
||||
toasts: [],
|
||||
show: (message) => {
|
||||
const id = ++counter;
|
||||
set((s) => ({ toasts: [...s.toasts, { id, message }] }));
|
||||
window.setTimeout(() => get().dismiss(id), 2200);
|
||||
},
|
||||
dismiss: (id) => set((s) => ({ toasts: s.toasts.filter((t) => t.id !== id) })),
|
||||
}));
|
||||
Reference in New Issue
Block a user