Skip to content

Commit 9d6e4bc

Browse files
committed
feat: Add isInitialized & isInitializing state variables
1 parent 2db45ce commit 9d6e4bc

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/provider.tsx

+14-1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ export interface UseInkathonError {
4545
* UseInkathon Context Type
4646
*/
4747
export type UseInkathonProviderContextType = {
48+
isInitializing?: boolean
49+
isInitialized?: boolean
4850
isConnecting?: boolean
4951
isConnected?: boolean
5052
error?: UseInkathonError
@@ -107,6 +109,8 @@ export const UseInkathonProvider: FC<UseInkathonProviderProps> = ({
107109
}
108110

109111
// Setup state variables
112+
const [isInitializing, setIsInitializing] = useState(true)
113+
const [isInitialized, setIsInitialized] = useState(false)
110114
const [isConnecting, setIsConnecting] = useState(connectOnInit)
111115
const [isConnected, setIsConnected] = useState(false)
112116
const [error, setError] = useState<UseInkathonError | undefined>()
@@ -133,6 +137,8 @@ export const UseInkathonProvider: FC<UseInkathonProviderProps> = ({
133137

134138
// Initialize polkadot-js/api
135139
const initialize = async (chain?: SubstrateChain) => {
140+
setIsInitialized(!!api?.isConnected)
141+
setIsInitializing(true)
136142
setIsConnected(false)
137143
setError(undefined)
138144

@@ -145,16 +151,21 @@ export const UseInkathonProvider: FC<UseInkathonProviderProps> = ({
145151
})
146152
setProvider(provider)
147153
setApi(api)
154+
setIsInitialized(true)
148155

149156
// Update active chain if switching
150157
if (activeChain.network !== _chain.network) setActiveChain(_chain)
151158
} catch (e) {
152159
const message = 'Error while initializing polkadot.js api'
153160
console.error(message, e)
154161
setError({ code: UseInkathonErrorCode.InitializationError, message })
162+
setIsConnected(false)
155163
setIsConnecting(false)
164+
setIsInitialized(false)
156165
setApi(undefined)
157166
setProvider(undefined)
167+
} finally {
168+
setIsInitializing(false)
158169
}
159170
}
160171

@@ -188,7 +199,7 @@ export const UseInkathonProvider: FC<UseInkathonProviderProps> = ({
188199
const connect = async (chain?: SubstrateChain, wallet?: SubstrateWallet) => {
189200
setError(undefined)
190201
setIsConnecting(true)
191-
setIsConnected(false)
202+
setIsConnected(!!activeAccount)
192203

193204
// Make sure api is initialized & connected to provider
194205
if (!api?.isConnected || (chain && chain.network !== activeChain.network)) {
@@ -264,6 +275,8 @@ export const UseInkathonProvider: FC<UseInkathonProviderProps> = ({
264275
return (
265276
<UseInkathonProviderContext.Provider
266277
value={{
278+
isInitializing,
279+
isInitialized,
267280
isConnecting,
268281
isConnected,
269282
error,

0 commit comments

Comments
 (0)