1+ import { ErrorType , User } from '@/common' ;
2+ import API from '@/api/api' ;
13import { AUTHCALLBACK } from '@/useAuth' ;
2- import { ErrorType } from '@/common' ;
34import { useNavigate } from 'react-router-dom' ;
45
56interface ErrorPageProps {
@@ -9,25 +10,19 @@ interface ErrorPageProps {
910 navigateTo ?: string ;
1011}
1112
12- const errorMap : Record <
13- ErrorType ,
14- { message : string ; buttonText : string ; onClick : ( ) => void }
15- > = {
13+ const errorMap : Record < ErrorType , { message : string ; buttonText : string } > = {
1614 unauthorized : {
1715 message :
1816 'You do not have permission to access this page. Contact your administrator if you believe you have reached this page in error.' ,
19- buttonText : 'Home Page' ,
20- onClick : ( ) => ( window . location . href = AUTHCALLBACK )
17+ buttonText : 'Home Page'
2118 } ,
2219 'not-found' : {
2320 message : 'The page you requested does not exist.' ,
24- buttonText : 'Home Page' ,
25- onClick : ( ) => ( window . location . href = AUTHCALLBACK )
21+ buttonText : 'Home Page'
2622 } ,
2723 'server-error' : {
2824 message : 'An unexpected error occurred. Please try again later.' ,
29- buttonText : 'Home Page' ,
30- onClick : ( ) => ( window . location . href = AUTHCALLBACK )
25+ buttonText : 'Home Page'
3126 }
3227} ;
3328
@@ -37,19 +32,28 @@ export default function Error({
3732 message : customMessage ,
3833 navigateTo
3934} : ErrorPageProps ) {
40- const {
41- message : defaultMessage ,
42- buttonText,
43- onClick
44- } = errorMap [ type ?? 'server-error' ] ;
35+ const { message : defaultMessage , buttonText } =
36+ errorMap [ type ?? 'server-error' ] ;
4537 const navigate = useNavigate ( ) ;
4638 const label = back ? 'Go Back' : buttonText ;
4739 const displayMessage = customMessage ?? defaultMessage ;
40+
41+ const handleHomeClick = async ( ) => {
42+ const response = await API . get < User > ( 'auth' ) ;
43+ if ( response . success ) {
44+ window . location . href = AUTHCALLBACK ;
45+ return ;
46+ }
47+ window . location . href = '/' ;
48+ } ;
49+
4850 const clickHandler = navigateTo
4951 ? ( ) => navigate ( navigateTo )
5052 : back
51- ? ( ) => navigate ( - 2 )
52- : onClick ;
53+ ? ( ) => navigate ( - 1 )
54+ : ( ) => {
55+ void handleHomeClick ( ) ;
56+ } ;
5357
5458 return (
5559 < div className = "flex items-center justify-center min-h-screen" >
0 commit comments