@@ -158,10 +158,16 @@ Create a `src/useProviders.ts` file and add the following code:
158
158
159
159
``` ts
160
160
import { useSyncExternalStore } from ' react' ;
161
- import { providers , Web3 } from ' web3' ;
161
+ import {
162
+ type EIP6963ProviderDetail ,
163
+ type EIP6963ProviderResponse ,
164
+ type EIP6963ProvidersMapUpdateEvent ,
165
+ Web3 ,
166
+ web3ProvidersMapUpdated ,
167
+ } from ' web3' ;
162
168
163
169
// initial empty list of providers
164
- let providerList: providers . EIP6963ProviderDetail [] = [];
170
+ let providerList: EIP6963ProviderDetail [] = [];
165
171
166
172
/**
167
173
* External store for subscribing to EIP-6963 providers
@@ -172,9 +178,9 @@ const providerStore = {
172
178
// subscribe to EIP-6963 provider events
173
179
subscribe : (callback : () => void ) => {
174
180
// update the list of providers
175
- function setProviders(response : providers . EIP6963ProviderResponse ) {
181
+ function setProviders(response : EIP6963ProviderResponse ) {
176
182
providerList = [];
177
- response .forEach ((provider : providers . EIP6963ProviderDetail ) => {
183
+ response .forEach ((provider : EIP6963ProviderDetail ) => {
178
184
providerList .push (provider );
179
185
});
180
186
@@ -186,16 +192,15 @@ const providerStore = {
186
192
Web3 .requestEIP6963Providers ().then (setProviders );
187
193
188
194
// handler for newly discovered providers
189
- function updateProviders(providerEvent : providers . EIP6963ProvidersMapUpdateEvent ) {
195
+ function updateProviders(providerEvent : EIP6963ProvidersMapUpdateEvent ) {
190
196
setProviders (providerEvent .detail );
191
197
}
192
198
193
199
// register handler for newly discovered providers with Web3.js helper function
194
200
Web3 .onNewProviderDiscovered (updateProviders );
195
201
196
202
// return a function that unsubscribes from the created event listener
197
- return () =>
198
- window .removeEventListener (providers .web3ProvidersMapUpdated as any , updateProviders );
203
+ return () => window .removeEventListener (web3ProvidersMapUpdated as any , updateProviders );
199
204
},
200
205
};
201
206
@@ -209,7 +214,7 @@ This file exports a single member - a React [`useSyncExternalStore` hook](https:
209
214
Replace the contents of the ` src/App.tsx ` file with the following:
210
215
211
216
``` tsx
212
- import type { providers } from ' web3' ;
217
+ import type { EIP6963ProviderDetail } from ' web3' ;
213
218
214
219
import { useProviders } from ' ./useProviders' ;
215
220
@@ -219,7 +224,7 @@ function App() {
219
224
220
225
return (
221
226
<>
222
- { providers .map ((provider : providers . EIP6963ProviderDetail ) => {
227
+ { providers .map ((provider : EIP6963ProviderDetail ) => {
223
228
// list available providers
224
229
return (
225
230
<div key = { provider .info .uuid } >
@@ -244,7 +249,7 @@ Replace the contents of the `src/App.tsx` file with the following:
244
249
245
250
``` tsx
246
251
import { useEffect , useState } from ' react' ;
247
- import { type providers , Web3 } from ' web3' ;
252
+ import { type EIP6963ProviderDetail , Web3 } from ' web3' ;
248
253
249
254
import { useProviders } from ' ./useProviders' ;
250
255
@@ -258,7 +263,7 @@ function App() {
258
263
const [balances, setBalances] = useState <Map <string , number >>(new Map ());
259
264
260
265
// click-handler for provider buttons
261
- function setProvider(provider : providers . EIP6963ProviderDetail ) {
266
+ function setProvider(provider : EIP6963ProviderDetail ) {
262
267
const web3: Web3 = new Web3 (provider .provider );
263
268
setWeb3 (web3 );
264
269
web3 .eth .requestAccounts ().then (setAccounts );
@@ -300,7 +305,7 @@ function App() {
300
305
<>
301
306
{ web3 === undefined
302
307
? // no provider set, display list of available providers
303
- providers .map ((provider : providers . EIP6963ProviderDetail ) => {
308
+ providers .map ((provider : EIP6963ProviderDetail ) => {
304
309
// for each provider, display a button to connect to that provider
305
310
return (
306
311
<div key = { provider .info .uuid } >
@@ -456,7 +461,7 @@ Replace the contents of the `src/App.tsx` file with the following:
456
461
457
462
``` tsx
458
463
import { useEffect , useState } from ' react' ;
459
- import { type providers , Web3 } from ' web3' ;
464
+ import { type EIP6963ProviderDetail , Web3 } from ' web3' ;
460
465
461
466
// highlight-next-line
462
467
import TransferForm from ' ./TransferForm' ;
@@ -472,7 +477,7 @@ function App() {
472
477
const [balances, setBalances] = useState <Map <string , number >>(new Map ());
473
478
474
479
// click-handler for provider buttons
475
- function setProvider(provider : providers . EIP6963ProviderDetail ) {
480
+ function setProvider(provider : EIP6963ProviderDetail ) {
476
481
const web3: Web3 = new Web3 (provider .provider );
477
482
setWeb3 (web3 );
478
483
web3 .eth .requestAccounts ().then (setAccounts );
@@ -514,7 +519,7 @@ function App() {
514
519
<>
515
520
{ web3 === undefined
516
521
? // no provider set, display list of available providers
517
- providers .map ((provider : providers . EIP6963ProviderDetail ) => {
522
+ providers .map ((provider : EIP6963ProviderDetail ) => {
518
523
// for each provider, display a button to connect to that provider
519
524
return (
520
525
<div key = { provider .info .uuid } >
0 commit comments