diff --git a/client/src/App.jsx b/client/src/App.jsx index 8eb316b15..a2bb729c6 100644 --- a/client/src/App.jsx +++ b/client/src/App.jsx @@ -4,6 +4,7 @@ import { RouterProvider } from 'react-router-dom'; import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; import { QueryClient, QueryClientProvider, QueryCache } from '@tanstack/react-query'; import { ScreenshotProvider, ThemeProvider, useApiErrorBoundary } from './hooks'; +import { ToastProvider } from './Providers'; import Toast from './components/ui/Toast'; import { router } from './routes'; @@ -25,10 +26,12 @@ const App = () => { - - - - + + + + + + diff --git a/client/src/Providers/ToastContext.tsx b/client/src/Providers/ToastContext.tsx new file mode 100644 index 000000000..88229f9c0 --- /dev/null +++ b/client/src/Providers/ToastContext.tsx @@ -0,0 +1,17 @@ +import { createContext } from 'react'; +import type { TShowToast } from '~/common'; +import { useToast } from '~/hooks'; + +type ToastContextType = { + showToast: ({ message, severity, showIcon }: TShowToast) => void; +}; + +export const ToastContext = createContext({ + showToast: () => ({}), +}); + +export default function ToastProvider({ children }) { + const { showToast } = useToast(); + + return {children}; +} diff --git a/client/src/Providers/index.ts b/client/src/Providers/index.ts new file mode 100644 index 000000000..41cb62ae9 --- /dev/null +++ b/client/src/Providers/index.ts @@ -0,0 +1,2 @@ +export { default as ToastProvider } from './ToastContext'; +export * from './ToastContext'; diff --git a/client/src/common/types.ts b/client/src/common/types.ts index e9cdadf15..5397cc2d8 100644 --- a/client/src/common/types.ts +++ b/client/src/common/types.ts @@ -28,6 +28,12 @@ export enum NotificationSeverity { ERROR = 'error', } +export type TShowToast = { + message: string; + severity?: NotificationSeverity; + showIcon?: boolean; +}; + export type TBaseSettingsProps = { conversation: TConversation | TPreset | null; className?: string; diff --git a/client/src/hooks/useToast.ts b/client/src/hooks/useToast.ts index 10792c6e5..455f9f0ff 100644 --- a/client/src/hooks/useToast.ts +++ b/client/src/hooks/useToast.ts @@ -1,5 +1,6 @@ -import { useRef, useEffect } from 'react'; import { useRecoilState } from 'recoil'; +import { useRef, useEffect } from 'react'; +import type { TShowToast } from '~/common'; import { NotificationSeverity } from '~/common'; import store from '~/store'; @@ -15,12 +16,6 @@ export default function useToast(timeoutDuration = 100) { }; }, []); - type TShowToast = { - message: string; - severity?: NotificationSeverity; - showIcon?: boolean; - }; - const showToast = ({ message, severity = NotificationSeverity.SUCCESS,