@@ -45,6 +45,8 @@ export interface UseInkathonError {
45
45
* UseInkathon Context Type
46
46
*/
47
47
export type UseInkathonProviderContextType = {
48
+ isInitializing ?: boolean
49
+ isInitialized ?: boolean
48
50
isConnecting ?: boolean
49
51
isConnected ?: boolean
50
52
error ?: UseInkathonError
@@ -107,6 +109,8 @@ export const UseInkathonProvider: FC<UseInkathonProviderProps> = ({
107
109
}
108
110
109
111
// Setup state variables
112
+ const [ isInitializing , setIsInitializing ] = useState ( true )
113
+ const [ isInitialized , setIsInitialized ] = useState ( false )
110
114
const [ isConnecting , setIsConnecting ] = useState ( connectOnInit )
111
115
const [ isConnected , setIsConnected ] = useState ( false )
112
116
const [ error , setError ] = useState < UseInkathonError | undefined > ( )
@@ -133,6 +137,8 @@ export const UseInkathonProvider: FC<UseInkathonProviderProps> = ({
133
137
134
138
// Initialize polkadot-js/api
135
139
const initialize = async ( chain ?: SubstrateChain ) => {
140
+ setIsInitialized ( ! ! api ?. isConnected )
141
+ setIsInitializing ( true )
136
142
setIsConnected ( false )
137
143
setError ( undefined )
138
144
@@ -145,16 +151,21 @@ export const UseInkathonProvider: FC<UseInkathonProviderProps> = ({
145
151
} )
146
152
setProvider ( provider )
147
153
setApi ( api )
154
+ setIsInitialized ( true )
148
155
149
156
// Update active chain if switching
150
157
if ( activeChain . network !== _chain . network ) setActiveChain ( _chain )
151
158
} catch ( e ) {
152
159
const message = 'Error while initializing polkadot.js api'
153
160
console . error ( message , e )
154
161
setError ( { code : UseInkathonErrorCode . InitializationError , message } )
162
+ setIsConnected ( false )
155
163
setIsConnecting ( false )
164
+ setIsInitialized ( false )
156
165
setApi ( undefined )
157
166
setProvider ( undefined )
167
+ } finally {
168
+ setIsInitializing ( false )
158
169
}
159
170
}
160
171
@@ -188,7 +199,7 @@ export const UseInkathonProvider: FC<UseInkathonProviderProps> = ({
188
199
const connect = async ( chain ?: SubstrateChain , wallet ?: SubstrateWallet ) => {
189
200
setError ( undefined )
190
201
setIsConnecting ( true )
191
- setIsConnected ( false )
202
+ setIsConnected ( ! ! activeAccount )
192
203
193
204
// Make sure api is initialized & connected to provider
194
205
if ( ! api ?. isConnected || ( chain && chain . network !== activeChain . network ) ) {
@@ -264,6 +275,8 @@ export const UseInkathonProvider: FC<UseInkathonProviderProps> = ({
264
275
return (
265
276
< UseInkathonProviderContext . Provider
266
277
value = { {
278
+ isInitializing,
279
+ isInitialized,
267
280
isConnecting,
268
281
isConnected,
269
282
error,
0 commit comments