diff --git a/apps/frontend/app/hooks/ResponseHelper.tsx b/apps/frontend/app/hooks/ResponseHelper.tsx
index 6275db9..0b48c02 100644
--- a/apps/frontend/app/hooks/ResponseHelper.tsx
+++ b/apps/frontend/app/hooks/ResponseHelper.tsx
@@ -1,11 +1,10 @@
-import { Text } from '@radix-ui/themes';
import { AxiosError } from 'axios';
import { useLocation, useNavigate } from 'react-router';
-import { toast } from 'react-toastify/unstyled';
import { SearchParamKeys } from '../lib/constants';
import { useQueryMessage } from './useQueryMessage';
import { QueryMessageCode, QueryMessageType } from '../lib/QueryMessages';
import { useCallback } from 'react';
+import { displayForbiddenErrorToast, displayNetworkErrorToast, displayUnexpectedErrorToast } from '../lib/toasts';
export enum ResponseErrorToastId {
NetworkError = 'network-error',
@@ -33,22 +32,7 @@ export function useResponseErrorHandler(): {
const defaultResponseErrorHandler = useCallback(
(err: unknown, options?: DefaultResponseErrorHandlerOptions): boolean => {
if (!(err instanceof AxiosError) && !options?.disableHandleUnexpectedErrors) {
- toast.error(
-
- Unexpected Error:
-
An unexpected error occurred. Please try again later.
-
,
- {
- position: 'top-center',
- autoClose: false,
- hideProgressBar: false,
- closeOnClick: true,
- pauseOnHover: true,
- draggable: false,
- progress: undefined,
- theme: 'colored',
- }
- );
+ displayUnexpectedErrorToast();
return true;
}
@@ -60,23 +44,7 @@ export function useResponseErrorHandler(): {
}
if (err.message === 'Network Error') {
- toast.error(
-
- Network Error:
-
Unable to reach the server. Please check your internet connection and try again.
-
,
- {
- toastId: ResponseErrorToastId.NetworkError,
- position: 'top-center',
- autoClose: false,
- hideProgressBar: false,
- closeOnClick: true,
- pauseOnHover: true,
- draggable: false,
- progress: undefined,
- theme: 'colored',
- }
- );
+ displayNetworkErrorToast();
return true;
}
@@ -92,22 +60,7 @@ export function useResponseErrorHandler(): {
}
if (err.status === 403) {
- toast.error(
-
- Forbidden:
-
You do not have permission to perform this action.
-
,
- {
- position: 'top-center',
- autoClose: 5000,
- hideProgressBar: false,
- closeOnClick: true,
- pauseOnHover: true,
- draggable: false,
- progress: undefined,
- theme: 'colored',
- }
- );
+ displayForbiddenErrorToast();
return true;
}
diff --git a/apps/frontend/app/lib/toasts.tsx b/apps/frontend/app/lib/toasts.tsx
new file mode 100644
index 0000000..8d2b577
--- /dev/null
+++ b/apps/frontend/app/lib/toasts.tsx
@@ -0,0 +1,64 @@
+import { toast, type ToastOptions } from 'react-toastify/unstyled';
+import { Text } from '@radix-ui/themes';
+import { ResponseErrorToastId } from '../hooks/ResponseHelper';
+
+export const displayUnexpectedErrorToast = (options: ToastOptions = {}) => {
+ toast.error(
+
+ Unexpected Error:
+
An unexpected error occurred. Please try again later.
+
,
+ {
+ position: 'top-center',
+ autoClose: false,
+ hideProgressBar: false,
+ closeOnClick: true,
+ pauseOnHover: true,
+ draggable: false,
+ progress: undefined,
+ theme: 'colored',
+ ...options,
+ }
+ );
+};
+
+export const displayNetworkErrorToast = (options: ToastOptions = {}) => {
+ toast.error(
+
+ Network Error:
+
Unable to reach the server. Please check your internet connection and try again.
+
,
+ {
+ toastId: ResponseErrorToastId.NetworkError,
+ position: 'top-center',
+ autoClose: false,
+ hideProgressBar: false,
+ closeOnClick: true,
+ pauseOnHover: true,
+ draggable: false,
+ progress: undefined,
+ theme: 'colored',
+ ...options,
+ }
+ );
+};
+
+export const displayForbiddenErrorToast = (options: ToastOptions = {}) => {
+ toast.error(
+
+ Forbidden:
+
You do not have permission to perform this action.
+
,
+ {
+ position: 'top-center',
+ autoClose: 5000,
+ hideProgressBar: false,
+ closeOnClick: true,
+ pauseOnHover: true,
+ draggable: false,
+ progress: undefined,
+ theme: 'colored',
+ ...options,
+ }
+ );
+};