@@ -10,7 +10,6 @@ import {
10
10
ReactNode ,
11
11
useEffect
12
12
} from 'react' ;
13
- import { toast } from 'react-toastify' ;
14
13
15
14
import { Pi } from '@pinetwork-js/sdk' ;
16
15
import axiosClient , { setAuthToken } from '@/config/client' ;
@@ -32,13 +31,15 @@ interface IAppContextProps {
32
31
setCurrentUser : React . Dispatch < SetStateAction < IUser | null > > ;
33
32
registerUser : ( ) => void ;
34
33
autoLoginUser :( ) => void ,
34
+ isSigningInUser : boolean
35
35
}
36
36
37
37
const initialState : IAppContextProps = {
38
38
currentUser : null ,
39
39
setCurrentUser : ( ) => { } ,
40
40
registerUser : ( ) => { } ,
41
41
autoLoginUser :( ) => { } ,
42
+ isSigningInUser :false
42
43
} ;
43
44
44
45
export const AppContext = createContext < IAppContextProps > ( initialState ) ;
@@ -50,6 +51,7 @@ interface AppContextProviderProps {
50
51
const AppContextProvider = ( { children } : AppContextProviderProps ) => {
51
52
const t = useTranslations ( ) ;
52
53
const [ currentUser , setCurrentUser ] = useState < IUser | null > ( null ) ;
54
+ const [ isSigningInUser , setIsSigningInUser ] = useState ( false )
53
55
54
56
const registerUser = async ( ) => {
55
57
logger . info ( 'Initializing Pi SDK for user registration.' ) ;
@@ -60,22 +62,25 @@ const AppContextProvider = ({ children }: AppContextProviderProps) => {
60
62
61
63
if ( isInitiated ) {
62
64
try {
65
+ setIsSigningInUser ( true )
63
66
const pioneerAuth : AuthResult = await window . Pi . authenticate ( [ 'username' , 'payments' ] , onIncompletePaymentFound ) ;
64
67
const res = await axiosClient . post ( "/users/authenticate" , { pioneerAuth} ) ;
65
68
66
69
if ( res . status === 200 ) {
67
70
setAuthToken ( res . data ?. token )
68
71
setCurrentUser ( res . data . user ) ;
69
- toast . success ( `${ t ( 'HOME.AUTHENTICATION.SUCCESSFUL_LOGIN_MESSAGE' ) } : ${ res . data ?. user ?. user_name } ` ) ;
70
72
logger . info ( 'User authenticated successfully.' ) ;
73
+ setTimeout ( ( ) => {
74
+ setIsSigningInUser ( false ) ; // hide the splash screen after the delay
75
+ } , 5000 ) ;
71
76
} else if ( res . status === 500 ) {
72
77
setCurrentUser ( null ) ;
73
- toast . error ( `${ t ( 'HOME.AUTHENTICATION.UNSUCCESSFUL_LOGIN_MESSAGE' ) } ` ) ;
74
78
logger . error ( 'User authentication failed.' ) ;
79
+ setIsSigningInUser ( false )
75
80
}
76
81
} catch ( error : any ) {
77
82
logger . error ( 'Error during user registration:' , { error } ) ;
78
- toast . info ( t ( 'HOME.AUTHENTICATION.PI_INFORMATION_NOT_FOUND_MESSAGE' ) ) ;
83
+ setIsSigningInUser ( false )
79
84
}
80
85
} else {
81
86
logger . error ( 'PI SDK failed to initialize.' ) ;
@@ -85,15 +90,19 @@ const AppContextProvider = ({ children }: AppContextProviderProps) => {
85
90
const autoLoginUser = async ( ) => {
86
91
logger . info ( 'Attempting to auto-login user.' ) ;
87
92
try {
93
+ setIsSigningInUser ( true )
88
94
const res = await axiosClient . get ( '/users/me' ) ;
89
95
90
96
if ( res . status === 200 ) {
91
97
logger . info ( 'Auto-login successful.' ) ;
92
98
setCurrentUser ( res . data ) ;
93
- toast . success ( `${ t ( 'HOME.AUTHENTICATION.SUCCESSFUL_LOGIN_MESSAGE' ) } : ${ res . data . user_name } ` ) ;
99
+ setTimeout ( ( ) => {
100
+ setIsSigningInUser ( false ) ; // hide the splash screen after the delay
101
+ } , 5000 ) ;
94
102
} else {
95
103
setCurrentUser ( null ) ;
96
104
logger . warn ( 'Auto-login failed.' ) ;
105
+ setIsSigningInUser ( false )
97
106
}
98
107
} catch ( error : any ) {
99
108
logger . error ( 'Auto login unresolved; attempting Pi SDK authentication:' , { error } ) ;
@@ -111,7 +120,7 @@ const AppContextProvider = ({ children }: AppContextProviderProps) => {
111
120
} , [ ] ) ;
112
121
113
122
return (
114
- < AppContext . Provider value = { { currentUser, setCurrentUser, registerUser, autoLoginUser} } >
123
+ < AppContext . Provider value = { { currentUser, setCurrentUser, registerUser, autoLoginUser, isSigningInUser } } >
115
124
{ children }
116
125
</ AppContext . Provider >
117
126
) ;
0 commit comments