@orderly.network/wallet-connector-privy 2.1.1 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,12 +1,12 @@
1
1
  import React12, { createContext, useContext, useState, useRef, useMemo, useEffect, useCallback } from 'react';
2
2
  import { useWalletConnector, useTrack, useStorageLedgerAddress, WalletConnectorContext, useLocalStorage, useStorageChain } from '@orderly.network/hooks';
3
3
  import { installExtension, ExtensionPositionEnum, useScreen, Button, Text, formatAddress, TooltipProvider, cn, ExclamationFillIcon, Tooltip, CopyIcon, Checkbox, ChevronDownIcon, ChevronUpIcon, toast, DropdownMenuRoot, DropdownMenuTrigger, DropdownMenuPortal, DropdownMenuContent, DropdownMenuItem, Popover, ChainIcon } from '@orderly.network/ui';
4
+ import { AccountStatusEnum, ArbitrumSepoliaChainInfo, SolanaDevnetChainInfo, SolanaChains as SolanaChains$1, ChainNamespace, TrackerEventName, ConnectorKey } from '@orderly.network/types';
5
+ import { PrivyProvider, usePrivy, useWallets, useSolanaWallets } from '@privy-io/react-auth';
6
+ import { WalletAdapterNetwork } from '@solana/wallet-adapter-base';
7
+ import { WalletProvider, useWallet } from '@solana/wallet-adapter-react';
4
8
  import * as WagmiExport from 'wagmi';
5
9
  import { createConfig, injected, createStorage, http, WagmiProvider, useConnect, useDisconnect, useAccount, useSwitchChain } from 'wagmi';
6
- import { AccountStatusEnum, ArbitrumSepoliaChainInfo, SolanaDevnetChainInfo, SolanaChains as SolanaChains$1, ChainNamespace, EnumTrackerKeys, ConnectorKey } from '@orderly.network/types';
7
- import { WalletProvider, useWallet } from '@solana/wallet-adapter-react';
8
- import { WalletAdapterNetwork } from '@solana/wallet-adapter-base';
9
- import { PrivyProvider, usePrivy, useWallets, useSolanaWallets } from '@privy-io/react-auth';
10
10
  import { useTranslation, Trans } from '@orderly.network/i18n';
11
11
  import { createPortal } from 'react-dom';
12
12
  import { AuthGuard } from '@orderly.network/ui-connector';
@@ -18,124 +18,262 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
18
18
  import * as WagmiConnectorsExport from 'wagmi/connectors';
19
19
 
20
20
  // src/provider.tsx
21
- var WagmiWalletContext = createContext(null);
22
- var WagmiWalletProvider = ({
21
+ var Network = /* @__PURE__ */ ((Network2) => {
22
+ Network2["mainnet"] = "mainnet";
23
+ Network2["testnet"] = "testnet";
24
+ return Network2;
25
+ })(Network || {});
26
+ var WalletType = /* @__PURE__ */ ((WalletType2) => {
27
+ WalletType2["EVM"] = "EVM";
28
+ WalletType2["SOL"] = "SOL";
29
+ WalletType2["PRIVY"] = "privy";
30
+ return WalletType2;
31
+ })(WalletType || {});
32
+ var SolanaChains = /* @__PURE__ */ new Map([[WalletAdapterNetwork.Devnet, 901901901], [WalletAdapterNetwork.Mainnet, 900900900]]);
33
+ var SolanaChainsMap = /* @__PURE__ */ new Map([
34
+ [WalletAdapterNetwork.Devnet, 901901901],
35
+ ["testnet" /* testnet */, 901901901],
36
+ ["mainnet" /* mainnet */, 900900900],
37
+ [WalletAdapterNetwork.Mainnet, 900900900]
38
+ ]);
39
+ var WalletChainTypeEnum = /* @__PURE__ */ ((WalletChainTypeEnum2) => {
40
+ WalletChainTypeEnum2["onlyEVM"] = "onlyEVM";
41
+ WalletChainTypeEnum2["onlySOL"] = "onlySOL";
42
+ WalletChainTypeEnum2["EVM_SOL"] = "EVM_SOL";
43
+ return WalletChainTypeEnum2;
44
+ })(WalletChainTypeEnum || {});
45
+
46
+ // src/providers/privyWalletProvider.tsx
47
+ var getPrivyEmbeddedWalletChainId = (chainId) => {
48
+ if (!chainId) {
49
+ return null;
50
+ }
51
+ return parseInt(chainId.split("eip155:")[1]);
52
+ };
53
+ var PrivyWalletContext = createContext(null);
54
+ var PrivyWalletProvider = ({
23
55
  children
24
56
  }) => {
25
- const { connectorWalletType } = useWalletConnectorPrivy();
26
- const [wallet, setWallet] = useState(void 0);
27
- const { connect, connectors: wagmiConnectors2 } = connectorWalletType.disableWagmi ? { connect: () => Promise.resolve(), connectors: [] } : useConnect();
28
- const { disconnect } = connectorWalletType.disableWagmi ? { disconnect: () => Promise.resolve() } : useDisconnect();
29
- const { connector, isConnected, address, chainId } = connectorWalletType.disableWagmi ? { connector: null, isConnected: false, address: null, chainId: null } : useAccount();
30
- const { switchChain } = connectorWalletType.disableWagmi ? { switchChain: () => Promise.resolve() } : useSwitchChain();
31
- const connectedChain = useMemo(() => {
32
- if (chainId) {
57
+ const { network, solanaInfo, setSolanaInfo, connectorWalletType } = useWalletConnectorPrivy();
58
+ const {
59
+ login,
60
+ logout,
61
+ ready,
62
+ authenticated,
63
+ user,
64
+ exportWallet: exportEvmWallet,
65
+ createWallet: createEvmWallet
66
+ } = usePrivy();
67
+ const { wallets: walletsEVM } = connectorWalletType.disablePrivy ? { wallets: [] } : useWallets();
68
+ const connectedRef = useRef(false);
69
+ const {
70
+ ready: solanaReady,
71
+ wallets: walletsSOL,
72
+ createWallet: createSolanaWallet,
73
+ exportWallet: exportSolanaWallet
74
+ } = connectorWalletType.disablePrivy ? {
75
+ ready: false,
76
+ wallets: [],
77
+ createWallet: () => Promise.resolve(),
78
+ exportWallet: () => Promise.resolve()
79
+ } : useSolanaWallets();
80
+ const [walletEVM, setWalletEVM] = useState(null);
81
+ const [walletSOL, setWalletSOL] = useState(null);
82
+ const { track } = useTrack();
83
+ const linkedAccount = useMemo(() => {
84
+ if (user && user.linkedAccounts) {
85
+ const account = user.linkedAccounts.filter((item) => item.type !== "wallet").sort(
86
+ (a, b) => (b.latestVerifiedAt?.getTime() ?? 0) - (a.latestVerifiedAt?.getTime() ?? 0)
87
+ )[0];
88
+ let address = null;
89
+ if (account.type === "email") {
90
+ address = account.address;
91
+ } else if (account.type === "twitter_oauth") {
92
+ address = `@${account.username}`;
93
+ } else if (account.type === "google_oauth") {
94
+ address = `@${account.name}`;
95
+ }
33
96
  return {
34
- id: chainId,
35
- namespace: ChainNamespace.evm
97
+ type: account.type,
98
+ address
36
99
  };
37
100
  }
38
101
  return null;
39
- }, [chainId]);
40
- const setChain = useCallback(
41
- (chainId2) => {
42
- return new Promise((resolve, reject) => {
43
- switchChain(
44
- { chainId: chainId2 },
45
- {
46
- onSuccess: () => resolve(true),
47
- onError: (e) => {
48
- return reject(e);
49
- }
50
- }
51
- );
102
+ }, [user]);
103
+ const switchChain = (chainId) => {
104
+ const wallet = walletsEVM[0];
105
+ if (wallet) {
106
+ return wallet.switchChain(chainId);
107
+ }
108
+ return Promise.reject("no wallet");
109
+ };
110
+ const connect = () => {
111
+ login();
112
+ };
113
+ const disconnect = () => {
114
+ return logout();
115
+ };
116
+ const exportWallet = (namespace) => {
117
+ if (namespace === ChainNamespace.evm) {
118
+ track(TrackerEventName.clickExportPrivateKey, {
119
+ type: "evm"
52
120
  });
53
- },
54
- [switchChain]
55
- );
121
+ return exportEvmWallet();
122
+ } else if (namespace === ChainNamespace.solana) {
123
+ track(TrackerEventName.clickExportPrivateKey, {
124
+ type: "solana"
125
+ });
126
+ return exportSolanaWallet();
127
+ }
128
+ return Promise.reject("no namespace");
129
+ };
130
+ const isConnected = useMemo(() => {
131
+ if (ready && authenticated) {
132
+ return true;
133
+ }
134
+ return false;
135
+ }, [ready, authenticated]);
56
136
  useEffect(() => {
57
- if (!connector || !isConnected) {
58
- setWallet(void 0);
137
+ if (!authenticated || !walletsEVM || !walletsEVM[0]) {
138
+ setWalletEVM(null);
59
139
  return;
60
140
  }
61
- connector.getProvider().then((provider) => {
62
- setWallet({
63
- label: connector.name,
141
+ const wallet = walletsEVM[0];
142
+ wallet.getEthereumProvider().then((provider) => {
143
+ setWalletEVM({
144
+ label: "privy",
64
145
  icon: "",
65
146
  provider,
66
147
  accounts: [
67
148
  {
68
- address
149
+ address: wallet.address
69
150
  }
70
151
  ],
71
152
  chains: [
72
153
  {
73
- id: chainId,
154
+ id: getPrivyEmbeddedWalletChainId(wallet.chainId) ?? 1,
74
155
  namespace: ChainNamespace.evm
75
156
  }
76
157
  ],
77
- chain: connectedChain
158
+ chain: {
159
+ id: getPrivyEmbeddedWalletChainId(wallet.chainId) ?? 1,
160
+ namespace: ChainNamespace.evm
161
+ }
78
162
  });
79
163
  });
80
- }, [connector, chainId, isConnected, address, connectedChain]);
81
- const connectors = useMemo(() => {
82
- return wagmiConnectors2.filter((connector2) => connector2.id !== "injected").sort(
83
- (a, b) => a.type === "injected" ? -1 : 1
164
+ }, [walletsEVM, authenticated]);
165
+ useEffect(() => {
166
+ if (!authenticated) {
167
+ setWalletSOL(null);
168
+ return;
169
+ }
170
+ if (!solanaReady) {
171
+ return;
172
+ }
173
+ if (!user) {
174
+ return;
175
+ }
176
+ const embededSolanaWallet = (user?.linkedAccounts).find(
177
+ (item) => item.chainType === "solana" && item.connectorType === "embedded"
84
178
  );
85
- }, [wagmiConnectors2]);
179
+ if (!embededSolanaWallet) {
180
+ createSolanaWallet().then();
181
+ return;
182
+ }
183
+ if (!walletsSOL || !walletsSOL[0]) {
184
+ return;
185
+ }
186
+ const wallet = walletsSOL.find((w) => w.connectorType === "embedded");
187
+ if (wallet) {
188
+ if (walletSOL && wallet.address === walletSOL.accounts[0].address) {
189
+ if (walletSOL.chain.id === SolanaChainsMap.get(network)) {
190
+ return;
191
+ }
192
+ }
193
+ setWalletSOL({
194
+ label: "privy",
195
+ icon: "",
196
+ provider: {
197
+ signMessage: wallet.signMessage,
198
+ signTransaction: wallet.signTransaction,
199
+ sendTransaction: wallet.sendTransaction,
200
+ network: solanaInfo?.network ?? WalletAdapterNetwork.Devnet,
201
+ rpcUrl: solanaInfo?.rpcUrl ?? void 0
202
+ },
203
+ accounts: [
204
+ {
205
+ address: wallet.address
206
+ }
207
+ ],
208
+ chains: [
209
+ {
210
+ id: SolanaChainsMap.get(network),
211
+ namespace: ChainNamespace.solana
212
+ }
213
+ ],
214
+ chain: {
215
+ id: SolanaChainsMap.get(network),
216
+ namespace: ChainNamespace.solana
217
+ }
218
+ });
219
+ }
220
+ }, [
221
+ walletsSOL,
222
+ authenticated,
223
+ createSolanaWallet,
224
+ solanaReady,
225
+ user,
226
+ walletSOL,
227
+ network,
228
+ solanaInfo
229
+ ]);
230
+ useEffect(() => {
231
+ if (isConnected && linkedAccount) {
232
+ if (connectedRef.current) {
233
+ return;
234
+ }
235
+ connectedRef.current = true;
236
+ track(TrackerEventName.socialLoginSuccess, {
237
+ type: linkedAccount.type,
238
+ address: linkedAccount.address
239
+ });
240
+ }
241
+ }, [isConnected, linkedAccount, connectedRef]);
86
242
  const value = useMemo(
87
243
  () => ({
88
- connectors,
89
244
  connect,
90
- wallet,
91
- connectedChain,
92
- setChain,
245
+ walletEVM,
246
+ walletSOL,
247
+ isConnected,
93
248
  disconnect,
94
- isConnected
249
+ switchChain,
250
+ linkedAccount,
251
+ exportWallet,
252
+ createEvmWallet,
253
+ createSolanaWallet
95
254
  }),
96
255
  [
97
- connectors,
98
256
  connect,
99
- wallet,
100
- connectedChain,
101
- setChain,
257
+ walletEVM,
258
+ walletSOL,
259
+ isConnected,
102
260
  disconnect,
103
- isConnected
104
- ]
105
- );
106
- return /* @__PURE__ */ React12.createElement(WagmiWalletContext.Provider, { value }, children);
107
- };
108
- function useWagmiWallet() {
109
- const context = useContext(WagmiWalletContext);
110
- if (!context) {
111
- throw new Error("useWagmiWallet must be used within a WagmiWalletProvider");
112
- }
113
- return context;
114
- }
115
- var Network = /* @__PURE__ */ ((Network2) => {
116
- Network2["mainnet"] = "mainnet";
117
- Network2["testnet"] = "testnet";
118
- return Network2;
119
- })(Network || {});
120
- var WalletType = /* @__PURE__ */ ((WalletType2) => {
121
- WalletType2["EVM"] = "EVM";
122
- WalletType2["SOL"] = "SOL";
123
- WalletType2["PRIVY"] = "privy";
124
- return WalletType2;
125
- })(WalletType || {});
126
- var SolanaChains = /* @__PURE__ */ new Map([[WalletAdapterNetwork.Devnet, 901901901], [WalletAdapterNetwork.Mainnet, 900900900]]);
127
- var SolanaChainsMap = /* @__PURE__ */ new Map([
128
- [WalletAdapterNetwork.Devnet, 901901901],
129
- ["testnet" /* testnet */, 901901901],
130
- ["mainnet" /* mainnet */, 900900900],
131
- [WalletAdapterNetwork.Mainnet, 900900900]
132
- ]);
133
- var WalletChainTypeEnum = /* @__PURE__ */ ((WalletChainTypeEnum2) => {
134
- WalletChainTypeEnum2["onlyEVM"] = "onlyEVM";
135
- WalletChainTypeEnum2["onlySOL"] = "onlySOL";
136
- WalletChainTypeEnum2["EVM_SOL"] = "EVM_SOL";
137
- return WalletChainTypeEnum2;
138
- })(WalletChainTypeEnum || {});
261
+ switchChain,
262
+ linkedAccount,
263
+ exportWallet,
264
+ createEvmWallet,
265
+ createSolanaWallet
266
+ ]
267
+ );
268
+ return /* @__PURE__ */ React12.createElement(PrivyWalletContext.Provider, { value }, children);
269
+ };
270
+ function usePrivyWallet() {
271
+ const context = useContext(PrivyWalletContext);
272
+ if (!context) {
273
+ throw new Error("usePrivyWallet must be used within a PrivyWalletProvider");
274
+ }
275
+ return context;
276
+ }
139
277
  var SolanaWalletContext = createContext(
140
278
  null
141
279
  );
@@ -361,231 +499,102 @@ function useSolanaWallet() {
361
499
  }
362
500
  return context;
363
501
  }
364
- var getPrivyEmbeddedWalletChainId = (chainId) => {
365
- if (!chainId) {
366
- return null;
367
- }
368
- return parseInt(chainId.split("eip155:")[1]);
369
- };
370
- var PrivyWalletContext = createContext(null);
371
- var PrivyWalletProvider = ({
502
+ var WagmiWalletContext = createContext(null);
503
+ var WagmiWalletProvider = ({
372
504
  children
373
505
  }) => {
374
- const { network, solanaInfo, setSolanaInfo, connectorWalletType } = useWalletConnectorPrivy();
375
- const {
376
- login,
377
- logout,
378
- ready,
379
- authenticated,
380
- user,
381
- exportWallet: exportEvmWallet,
382
- createWallet: createEvmWallet
383
- } = usePrivy();
384
- const { wallets: walletsEVM } = connectorWalletType.disablePrivy ? { wallets: [] } : useWallets();
385
- const connectedRef = useRef(false);
386
- const {
387
- ready: solanaReady,
388
- wallets: walletsSOL,
389
- createWallet: createSolanaWallet,
390
- exportWallet: exportSolanaWallet
391
- } = connectorWalletType.disablePrivy ? { ready: false, wallets: [], createWallet: () => Promise.resolve(), exportWallet: () => Promise.resolve() } : useSolanaWallets();
392
- const [walletEVM, setWalletEVM] = useState(null);
393
- const [walletSOL, setWalletSOL] = useState(null);
394
- const { track } = useTrack();
395
- const linkedAccount = useMemo(() => {
396
- if (user && user.linkedAccounts) {
397
- const account = user.linkedAccounts.filter((item) => item.type !== "wallet").sort(
398
- (a, b) => (b.latestVerifiedAt?.getTime() ?? 0) - (a.latestVerifiedAt?.getTime() ?? 0)
399
- )[0];
400
- let address = null;
401
- if (account.type === "email") {
402
- address = account.address;
403
- } else if (account.type === "twitter_oauth") {
404
- address = `@${account.username}`;
405
- } else if (account.type === "google_oauth") {
406
- address = `@${account.name}`;
407
- }
506
+ const { connectorWalletType } = useWalletConnectorPrivy();
507
+ const [wallet, setWallet] = useState(void 0);
508
+ const { connect, connectors: wagmiConnectors2 } = connectorWalletType.disableWagmi ? { connect: () => Promise.resolve(), connectors: [] } : useConnect();
509
+ const { disconnect } = connectorWalletType.disableWagmi ? { disconnect: () => Promise.resolve() } : useDisconnect();
510
+ const { connector, isConnected, address, chainId } = connectorWalletType.disableWagmi ? { connector: null, isConnected: false, address: null, chainId: null } : useAccount();
511
+ const { switchChain } = connectorWalletType.disableWagmi ? { switchChain: () => Promise.resolve() } : useSwitchChain();
512
+ const connectedChain = useMemo(() => {
513
+ if (chainId) {
408
514
  return {
409
- type: account.type,
410
- address
515
+ id: chainId,
516
+ namespace: ChainNamespace.evm
411
517
  };
412
518
  }
413
519
  return null;
414
- }, [user]);
415
- const switchChain = (chainId) => {
416
- const wallet = walletsEVM[0];
417
- if (wallet) {
418
- return wallet.switchChain(chainId);
419
- }
420
- return Promise.reject("no wallet");
421
- };
422
- const connect = () => {
423
- login();
424
- };
425
- const disconnect = () => {
426
- return logout();
427
- };
428
- const exportWallet = (namespace) => {
429
- if (namespace === ChainNamespace.evm) {
430
- track(EnumTrackerKeys.clickExportPrivateKey, {
431
- type: "evm"
432
- });
433
- return exportEvmWallet();
434
- } else if (namespace === ChainNamespace.solana) {
435
- track(EnumTrackerKeys.clickExportPrivateKey, {
436
- type: "solana"
520
+ }, [chainId]);
521
+ const setChain = useCallback(
522
+ (chainId2) => {
523
+ return new Promise((resolve, reject) => {
524
+ switchChain(
525
+ { chainId: chainId2 },
526
+ {
527
+ onSuccess: () => resolve(true),
528
+ onError: (e) => {
529
+ return reject(e);
530
+ }
531
+ }
532
+ );
437
533
  });
438
- return exportSolanaWallet();
439
- }
440
- return Promise.reject("no namespace");
441
- };
442
- const isConnected = useMemo(() => {
443
- if (ready && authenticated) {
444
- return true;
445
- }
446
- return false;
447
- }, [ready, authenticated]);
534
+ },
535
+ [switchChain]
536
+ );
448
537
  useEffect(() => {
449
- if (!authenticated || !walletsEVM || !walletsEVM[0]) {
450
- setWalletEVM(null);
538
+ if (!connector || !isConnected) {
539
+ setWallet(void 0);
451
540
  return;
452
541
  }
453
- const wallet = walletsEVM[0];
454
- wallet.getEthereumProvider().then((provider) => {
455
- setWalletEVM({
456
- label: "privy",
542
+ connector.getProvider().then((provider) => {
543
+ setWallet({
544
+ label: connector.name,
457
545
  icon: "",
458
546
  provider,
459
547
  accounts: [
460
548
  {
461
- address: wallet.address
549
+ address
462
550
  }
463
551
  ],
464
552
  chains: [
465
553
  {
466
- id: getPrivyEmbeddedWalletChainId(wallet.chainId) ?? 1,
554
+ id: chainId,
467
555
  namespace: ChainNamespace.evm
468
556
  }
469
557
  ],
470
- chain: {
471
- id: getPrivyEmbeddedWalletChainId(wallet.chainId) ?? 1,
472
- namespace: ChainNamespace.evm
473
- }
558
+ chain: connectedChain
474
559
  });
475
560
  });
476
- }, [walletsEVM, authenticated]);
477
- useEffect(() => {
478
- if (!authenticated) {
479
- setWalletSOL(null);
480
- return;
481
- }
482
- if (!solanaReady) {
483
- return;
484
- }
485
- if (!user) {
486
- return;
487
- }
488
- const embededSolanaWallet = (user?.linkedAccounts).find(
489
- (item) => item.chainType === "solana" && item.connectorType === "embedded"
561
+ }, [connector, chainId, isConnected, address, connectedChain]);
562
+ const connectors = useMemo(() => {
563
+ return wagmiConnectors2.filter((connector2) => connector2.id !== "injected").sort(
564
+ (a, b) => a.type === "injected" ? -1 : 1
490
565
  );
491
- if (!embededSolanaWallet) {
492
- createSolanaWallet().then();
493
- return;
494
- }
495
- if (!walletsSOL || !walletsSOL[0]) {
496
- return;
497
- }
498
- const wallet = walletsSOL.find((w) => w.connectorType === "embedded");
499
- if (wallet) {
500
- if (walletSOL && wallet.address === walletSOL.accounts[0].address) {
501
- if (walletSOL.chain.id === SolanaChainsMap.get(network)) {
502
- return;
503
- }
504
- }
505
- setWalletSOL({
506
- label: "privy",
507
- icon: "",
508
- provider: {
509
- signMessage: wallet.signMessage,
510
- signTransaction: wallet.signTransaction,
511
- sendTransaction: wallet.sendTransaction,
512
- network: solanaInfo?.network ?? WalletAdapterNetwork.Devnet,
513
- rpcUrl: solanaInfo?.rpcUrl ?? void 0
514
- },
515
- accounts: [
516
- {
517
- address: wallet.address
518
- }
519
- ],
520
- chains: [
521
- {
522
- id: SolanaChainsMap.get(network),
523
- namespace: ChainNamespace.solana
524
- }
525
- ],
526
- chain: {
527
- id: SolanaChainsMap.get(network),
528
- namespace: ChainNamespace.solana
529
- }
530
- });
531
- }
532
- }, [
533
- walletsSOL,
534
- authenticated,
535
- createSolanaWallet,
536
- solanaReady,
537
- user,
538
- walletSOL,
539
- network,
540
- solanaInfo
541
- ]);
542
- useEffect(() => {
543
- if (isConnected && linkedAccount) {
544
- if (connectedRef.current) {
545
- return;
546
- }
547
- connectedRef.current = true;
548
- track(EnumTrackerKeys.socialLoginSuccess, {
549
- type: linkedAccount.type,
550
- address: linkedAccount.address
551
- });
552
- }
553
- }, [isConnected, linkedAccount, connectedRef]);
566
+ }, [wagmiConnectors2]);
554
567
  const value = useMemo(
555
568
  () => ({
569
+ connectors,
556
570
  connect,
557
- walletEVM,
558
- walletSOL,
559
- isConnected,
571
+ wallet,
572
+ connectedChain,
573
+ setChain,
560
574
  disconnect,
561
- switchChain,
562
- linkedAccount,
563
- exportWallet,
564
- createEvmWallet,
565
- createSolanaWallet
575
+ isConnected
566
576
  }),
567
577
  [
578
+ connectors,
568
579
  connect,
569
- walletEVM,
570
- walletSOL,
571
- isConnected,
580
+ wallet,
581
+ connectedChain,
582
+ setChain,
572
583
  disconnect,
573
- switchChain,
574
- linkedAccount,
575
- exportWallet,
576
- createEvmWallet,
577
- createSolanaWallet
584
+ isConnected
578
585
  ]
579
586
  );
580
- return /* @__PURE__ */ React12.createElement(PrivyWalletContext.Provider, { value }, children);
587
+ return /* @__PURE__ */ React12.createElement(WagmiWalletContext.Provider, { value }, children);
581
588
  };
582
- function usePrivyWallet() {
583
- const context = useContext(PrivyWalletContext);
589
+ function useWagmiWallet() {
590
+ const context = useContext(WagmiWalletContext);
584
591
  if (!context) {
585
- throw new Error("usePrivyWallet must be used within a PrivyWalletProvider");
592
+ throw new Error("useWagmiWallet must be used within a WagmiWalletProvider");
586
593
  }
587
594
  return context;
588
595
  }
596
+
597
+ // src/hooks/useWallet.tsx
589
598
  function useWallet2() {
590
599
  const { track } = useTrack();
591
600
  const { walletChainType } = useWalletConnectorPrivy();
@@ -657,7 +666,7 @@ function useWallet2() {
657
666
  }
658
667
  isManual.current = true;
659
668
  return setChainPrivy(parseInt(chain.chainId)).then((res) => {
660
- track(EnumTrackerKeys.switchNetworkSuccess, {
669
+ track(TrackerEventName.switchNetworkSuccess, {
661
670
  from_chain: storageChain?.chainId,
662
671
  to_chain: chain.chainId
663
672
  });
@@ -686,7 +695,7 @@ function useWallet2() {
686
695
  if (tempNamespace === ChainNamespace.evm) {
687
696
  await setChainEvm(parseInt(chain.chainId));
688
697
  setStorageChain(parseInt(chain.chainId));
689
- track(EnumTrackerKeys.switchNetworkSuccess, {
698
+ track(TrackerEventName.switchNetworkSuccess, {
690
699
  from_chain: storageChain?.chainId,
691
700
  to_chain: chain.chainId
692
701
  });
@@ -742,7 +751,7 @@ function useWallet2() {
742
751
  }
743
752
  }
744
753
  }
745
- track(EnumTrackerKeys.clickSwitchWallet, {
754
+ track(TrackerEventName.clickSwitchWallet, {
746
755
  fromWallet,
747
756
  toWallet
748
757
  });
@@ -2095,12 +2104,10 @@ function InitSolanaProvider({
2095
2104
  } else {
2096
2105
  rpcUrl = devnetRpc ?? null;
2097
2106
  }
2098
- if (rpcUrl) {
2099
- setSolanaInfo({
2100
- rpcUrl,
2101
- network: network === "mainnet" ? WalletAdapterNetwork.Mainnet : WalletAdapterNetwork.Devnet
2102
- });
2103
- }
2107
+ setSolanaInfo({
2108
+ rpcUrl,
2109
+ network: network === "mainnet" ? WalletAdapterNetwork.Mainnet : WalletAdapterNetwork.Devnet
2110
+ });
2104
2111
  }, [network, mainnetRpc, devnetRpc, setSolanaInfo]);
2105
2112
  return /* @__PURE__ */ React12.createElement(WalletProvider, { wallets, onError }, children);
2106
2113
  }