From f4926848d74f1036090d55fd26a64373f8d7eeaa Mon Sep 17 00:00:00 2001 From: Leonid Pershin Date: Mon, 27 Jul 2026 00:25:03 +0300 Subject: [PATCH] Remove ToastProvider and related toast context functionality to streamline UI components and eliminate unused code. This change enhances overall code maintainability and reduces bundle size. --- frontend/src/shared/ui/toast-store.tsx | 54 -------------------------- 1 file changed, 54 deletions(-) delete mode 100644 frontend/src/shared/ui/toast-store.tsx diff --git a/frontend/src/shared/ui/toast-store.tsx b/frontend/src/shared/ui/toast-store.tsx deleted file mode 100644 index e34abc4..0000000 --- a/frontend/src/shared/ui/toast-store.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import { - createContext, - useCallback, - useContext, - useMemo, - useState, - type ReactNode, -} from 'react' - -type ToastVariant = 'default' | 'success' | 'error' -export type ToastItem = { id: number; message: string; variant: ToastVariant } - -let nextId = 1 -let pushImpl: ((message: string, variant: ToastVariant) => void) | null = null - -type ToastContextValue = { - toasts: ToastItem[] - dismiss: (id: number) => void -} - -const ToastContext = createContext(null) - -export function ToastProvider({ children }: { children: ReactNode }) { - const [toasts, setToasts] = useState([]) - - const push = useCallback((message: string, variant: ToastVariant) => { - setToasts((prev) => [...prev, { id: nextId++, message, variant }]) - }, []) - - const dismiss = useCallback((id: number) => { - setToasts((prev) => prev.filter((t) => t.id !== id)) - }, []) - - pushImpl = push - - // Литерал в value пересоздавался бы на каждый рендер провайдера и перерисовывал всех потребителей - // контекста, даже когда список тостов не менялся. - const value = useMemo(() => ({ toasts, dismiss }), [toasts, dismiss]) - - return {children} -} - -export function useToastContext() { - const ctx = useContext(ToastContext) - if (!ctx) throw new Error('useToastContext must be used within ToastProvider') - return ctx -} - -/** Императивный вызов из любого места (не только компонентов). */ -export const toast = { - success: (message: string) => pushImpl?.(message, 'success'), - error: (message: string) => pushImpl?.(message, 'error'), - message: (message: string) => pushImpl?.(message, 'default'), -}