@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.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +291 -284
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +292 -285
- package/dist/index.mjs.map +1 -1
- package/package.json +9 -9
package/dist/index.js
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
var React12 = require('react');
|
|
4
4
|
var hooks = require('@orderly.network/hooks');
|
|
5
5
|
var ui = require('@orderly.network/ui');
|
|
6
|
-
var WagmiExport = require('wagmi');
|
|
7
6
|
var types = require('@orderly.network/types');
|
|
8
|
-
var walletAdapterReact = require('@solana/wallet-adapter-react');
|
|
9
|
-
var walletAdapterBase = require('@solana/wallet-adapter-base');
|
|
10
7
|
var reactAuth = require('@privy-io/react-auth');
|
|
8
|
+
var walletAdapterBase = require('@solana/wallet-adapter-base');
|
|
9
|
+
var walletAdapterReact = require('@solana/wallet-adapter-react');
|
|
10
|
+
var WagmiExport = require('wagmi');
|
|
11
11
|
var i18n = require('@orderly.network/i18n');
|
|
12
12
|
var reactDom = require('react-dom');
|
|
13
13
|
var uiConnector = require('@orderly.network/ui-connector');
|
|
@@ -43,124 +43,262 @@ var viemExport__namespace = /*#__PURE__*/_interopNamespace(viemExport);
|
|
|
43
43
|
var WagmiConnectorsExport__namespace = /*#__PURE__*/_interopNamespace(WagmiConnectorsExport);
|
|
44
44
|
|
|
45
45
|
// src/provider.tsx
|
|
46
|
-
var
|
|
47
|
-
|
|
46
|
+
var Network = /* @__PURE__ */ ((Network2) => {
|
|
47
|
+
Network2["mainnet"] = "mainnet";
|
|
48
|
+
Network2["testnet"] = "testnet";
|
|
49
|
+
return Network2;
|
|
50
|
+
})(Network || {});
|
|
51
|
+
var WalletType = /* @__PURE__ */ ((WalletType2) => {
|
|
52
|
+
WalletType2["EVM"] = "EVM";
|
|
53
|
+
WalletType2["SOL"] = "SOL";
|
|
54
|
+
WalletType2["PRIVY"] = "privy";
|
|
55
|
+
return WalletType2;
|
|
56
|
+
})(WalletType || {});
|
|
57
|
+
var SolanaChains = /* @__PURE__ */ new Map([[walletAdapterBase.WalletAdapterNetwork.Devnet, 901901901], [walletAdapterBase.WalletAdapterNetwork.Mainnet, 900900900]]);
|
|
58
|
+
var SolanaChainsMap = /* @__PURE__ */ new Map([
|
|
59
|
+
[walletAdapterBase.WalletAdapterNetwork.Devnet, 901901901],
|
|
60
|
+
["testnet" /* testnet */, 901901901],
|
|
61
|
+
["mainnet" /* mainnet */, 900900900],
|
|
62
|
+
[walletAdapterBase.WalletAdapterNetwork.Mainnet, 900900900]
|
|
63
|
+
]);
|
|
64
|
+
var WalletChainTypeEnum = /* @__PURE__ */ ((WalletChainTypeEnum2) => {
|
|
65
|
+
WalletChainTypeEnum2["onlyEVM"] = "onlyEVM";
|
|
66
|
+
WalletChainTypeEnum2["onlySOL"] = "onlySOL";
|
|
67
|
+
WalletChainTypeEnum2["EVM_SOL"] = "EVM_SOL";
|
|
68
|
+
return WalletChainTypeEnum2;
|
|
69
|
+
})(WalletChainTypeEnum || {});
|
|
70
|
+
|
|
71
|
+
// src/providers/privyWalletProvider.tsx
|
|
72
|
+
var getPrivyEmbeddedWalletChainId = (chainId) => {
|
|
73
|
+
if (!chainId) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
return parseInt(chainId.split("eip155:")[1]);
|
|
77
|
+
};
|
|
78
|
+
var PrivyWalletContext = React12.createContext(null);
|
|
79
|
+
var PrivyWalletProvider = ({
|
|
48
80
|
children
|
|
49
81
|
}) => {
|
|
50
|
-
const { connectorWalletType } = useWalletConnectorPrivy();
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
82
|
+
const { network, solanaInfo, setSolanaInfo, connectorWalletType } = useWalletConnectorPrivy();
|
|
83
|
+
const {
|
|
84
|
+
login,
|
|
85
|
+
logout,
|
|
86
|
+
ready,
|
|
87
|
+
authenticated,
|
|
88
|
+
user,
|
|
89
|
+
exportWallet: exportEvmWallet,
|
|
90
|
+
createWallet: createEvmWallet
|
|
91
|
+
} = reactAuth.usePrivy();
|
|
92
|
+
const { wallets: walletsEVM } = connectorWalletType.disablePrivy ? { wallets: [] } : reactAuth.useWallets();
|
|
93
|
+
const connectedRef = React12.useRef(false);
|
|
94
|
+
const {
|
|
95
|
+
ready: solanaReady,
|
|
96
|
+
wallets: walletsSOL,
|
|
97
|
+
createWallet: createSolanaWallet,
|
|
98
|
+
exportWallet: exportSolanaWallet
|
|
99
|
+
} = connectorWalletType.disablePrivy ? {
|
|
100
|
+
ready: false,
|
|
101
|
+
wallets: [],
|
|
102
|
+
createWallet: () => Promise.resolve(),
|
|
103
|
+
exportWallet: () => Promise.resolve()
|
|
104
|
+
} : reactAuth.useSolanaWallets();
|
|
105
|
+
const [walletEVM, setWalletEVM] = React12.useState(null);
|
|
106
|
+
const [walletSOL, setWalletSOL] = React12.useState(null);
|
|
107
|
+
const { track } = hooks.useTrack();
|
|
108
|
+
const linkedAccount = React12.useMemo(() => {
|
|
109
|
+
if (user && user.linkedAccounts) {
|
|
110
|
+
const account = user.linkedAccounts.filter((item) => item.type !== "wallet").sort(
|
|
111
|
+
(a, b) => (b.latestVerifiedAt?.getTime() ?? 0) - (a.latestVerifiedAt?.getTime() ?? 0)
|
|
112
|
+
)[0];
|
|
113
|
+
let address = null;
|
|
114
|
+
if (account.type === "email") {
|
|
115
|
+
address = account.address;
|
|
116
|
+
} else if (account.type === "twitter_oauth") {
|
|
117
|
+
address = `@${account.username}`;
|
|
118
|
+
} else if (account.type === "google_oauth") {
|
|
119
|
+
address = `@${account.name}`;
|
|
120
|
+
}
|
|
58
121
|
return {
|
|
59
|
-
|
|
60
|
-
|
|
122
|
+
type: account.type,
|
|
123
|
+
address
|
|
61
124
|
};
|
|
62
125
|
}
|
|
63
126
|
return null;
|
|
64
|
-
}, [
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
127
|
+
}, [user]);
|
|
128
|
+
const switchChain = (chainId) => {
|
|
129
|
+
const wallet = walletsEVM[0];
|
|
130
|
+
if (wallet) {
|
|
131
|
+
return wallet.switchChain(chainId);
|
|
132
|
+
}
|
|
133
|
+
return Promise.reject("no wallet");
|
|
134
|
+
};
|
|
135
|
+
const connect = () => {
|
|
136
|
+
login();
|
|
137
|
+
};
|
|
138
|
+
const disconnect = () => {
|
|
139
|
+
return logout();
|
|
140
|
+
};
|
|
141
|
+
const exportWallet = (namespace) => {
|
|
142
|
+
if (namespace === types.ChainNamespace.evm) {
|
|
143
|
+
track(types.TrackerEventName.clickExportPrivateKey, {
|
|
144
|
+
type: "evm"
|
|
77
145
|
});
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
146
|
+
return exportEvmWallet();
|
|
147
|
+
} else if (namespace === types.ChainNamespace.solana) {
|
|
148
|
+
track(types.TrackerEventName.clickExportPrivateKey, {
|
|
149
|
+
type: "solana"
|
|
150
|
+
});
|
|
151
|
+
return exportSolanaWallet();
|
|
152
|
+
}
|
|
153
|
+
return Promise.reject("no namespace");
|
|
154
|
+
};
|
|
155
|
+
const isConnected = React12.useMemo(() => {
|
|
156
|
+
if (ready && authenticated) {
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
return false;
|
|
160
|
+
}, [ready, authenticated]);
|
|
81
161
|
React12.useEffect(() => {
|
|
82
|
-
if (!
|
|
83
|
-
|
|
162
|
+
if (!authenticated || !walletsEVM || !walletsEVM[0]) {
|
|
163
|
+
setWalletEVM(null);
|
|
84
164
|
return;
|
|
85
165
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
166
|
+
const wallet = walletsEVM[0];
|
|
167
|
+
wallet.getEthereumProvider().then((provider) => {
|
|
168
|
+
setWalletEVM({
|
|
169
|
+
label: "privy",
|
|
89
170
|
icon: "",
|
|
90
171
|
provider,
|
|
91
172
|
accounts: [
|
|
92
173
|
{
|
|
93
|
-
address
|
|
174
|
+
address: wallet.address
|
|
94
175
|
}
|
|
95
176
|
],
|
|
96
177
|
chains: [
|
|
97
178
|
{
|
|
98
|
-
id: chainId,
|
|
179
|
+
id: getPrivyEmbeddedWalletChainId(wallet.chainId) ?? 1,
|
|
99
180
|
namespace: types.ChainNamespace.evm
|
|
100
181
|
}
|
|
101
182
|
],
|
|
102
|
-
chain:
|
|
183
|
+
chain: {
|
|
184
|
+
id: getPrivyEmbeddedWalletChainId(wallet.chainId) ?? 1,
|
|
185
|
+
namespace: types.ChainNamespace.evm
|
|
186
|
+
}
|
|
103
187
|
});
|
|
104
188
|
});
|
|
105
|
-
}, [
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
(
|
|
189
|
+
}, [walletsEVM, authenticated]);
|
|
190
|
+
React12.useEffect(() => {
|
|
191
|
+
if (!authenticated) {
|
|
192
|
+
setWalletSOL(null);
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
if (!solanaReady) {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
if (!user) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
const embededSolanaWallet = (user?.linkedAccounts).find(
|
|
202
|
+
(item) => item.chainType === "solana" && item.connectorType === "embedded"
|
|
109
203
|
);
|
|
110
|
-
|
|
204
|
+
if (!embededSolanaWallet) {
|
|
205
|
+
createSolanaWallet().then();
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
if (!walletsSOL || !walletsSOL[0]) {
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
const wallet = walletsSOL.find((w) => w.connectorType === "embedded");
|
|
212
|
+
if (wallet) {
|
|
213
|
+
if (walletSOL && wallet.address === walletSOL.accounts[0].address) {
|
|
214
|
+
if (walletSOL.chain.id === SolanaChainsMap.get(network)) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
setWalletSOL({
|
|
219
|
+
label: "privy",
|
|
220
|
+
icon: "",
|
|
221
|
+
provider: {
|
|
222
|
+
signMessage: wallet.signMessage,
|
|
223
|
+
signTransaction: wallet.signTransaction,
|
|
224
|
+
sendTransaction: wallet.sendTransaction,
|
|
225
|
+
network: solanaInfo?.network ?? walletAdapterBase.WalletAdapterNetwork.Devnet,
|
|
226
|
+
rpcUrl: solanaInfo?.rpcUrl ?? void 0
|
|
227
|
+
},
|
|
228
|
+
accounts: [
|
|
229
|
+
{
|
|
230
|
+
address: wallet.address
|
|
231
|
+
}
|
|
232
|
+
],
|
|
233
|
+
chains: [
|
|
234
|
+
{
|
|
235
|
+
id: SolanaChainsMap.get(network),
|
|
236
|
+
namespace: types.ChainNamespace.solana
|
|
237
|
+
}
|
|
238
|
+
],
|
|
239
|
+
chain: {
|
|
240
|
+
id: SolanaChainsMap.get(network),
|
|
241
|
+
namespace: types.ChainNamespace.solana
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
}, [
|
|
246
|
+
walletsSOL,
|
|
247
|
+
authenticated,
|
|
248
|
+
createSolanaWallet,
|
|
249
|
+
solanaReady,
|
|
250
|
+
user,
|
|
251
|
+
walletSOL,
|
|
252
|
+
network,
|
|
253
|
+
solanaInfo
|
|
254
|
+
]);
|
|
255
|
+
React12.useEffect(() => {
|
|
256
|
+
if (isConnected && linkedAccount) {
|
|
257
|
+
if (connectedRef.current) {
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
connectedRef.current = true;
|
|
261
|
+
track(types.TrackerEventName.socialLoginSuccess, {
|
|
262
|
+
type: linkedAccount.type,
|
|
263
|
+
address: linkedAccount.address
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
}, [isConnected, linkedAccount, connectedRef]);
|
|
111
267
|
const value = React12.useMemo(
|
|
112
268
|
() => ({
|
|
113
|
-
connectors,
|
|
114
269
|
connect,
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
270
|
+
walletEVM,
|
|
271
|
+
walletSOL,
|
|
272
|
+
isConnected,
|
|
118
273
|
disconnect,
|
|
119
|
-
|
|
274
|
+
switchChain,
|
|
275
|
+
linkedAccount,
|
|
276
|
+
exportWallet,
|
|
277
|
+
createEvmWallet,
|
|
278
|
+
createSolanaWallet
|
|
120
279
|
}),
|
|
121
280
|
[
|
|
122
|
-
connectors,
|
|
123
281
|
connect,
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
282
|
+
walletEVM,
|
|
283
|
+
walletSOL,
|
|
284
|
+
isConnected,
|
|
127
285
|
disconnect,
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
})(Network || {});
|
|
145
|
-
var WalletType = /* @__PURE__ */ ((WalletType2) => {
|
|
146
|
-
WalletType2["EVM"] = "EVM";
|
|
147
|
-
WalletType2["SOL"] = "SOL";
|
|
148
|
-
WalletType2["PRIVY"] = "privy";
|
|
149
|
-
return WalletType2;
|
|
150
|
-
})(WalletType || {});
|
|
151
|
-
var SolanaChains = /* @__PURE__ */ new Map([[walletAdapterBase.WalletAdapterNetwork.Devnet, 901901901], [walletAdapterBase.WalletAdapterNetwork.Mainnet, 900900900]]);
|
|
152
|
-
var SolanaChainsMap = /* @__PURE__ */ new Map([
|
|
153
|
-
[walletAdapterBase.WalletAdapterNetwork.Devnet, 901901901],
|
|
154
|
-
["testnet" /* testnet */, 901901901],
|
|
155
|
-
["mainnet" /* mainnet */, 900900900],
|
|
156
|
-
[walletAdapterBase.WalletAdapterNetwork.Mainnet, 900900900]
|
|
157
|
-
]);
|
|
158
|
-
var WalletChainTypeEnum = /* @__PURE__ */ ((WalletChainTypeEnum2) => {
|
|
159
|
-
WalletChainTypeEnum2["onlyEVM"] = "onlyEVM";
|
|
160
|
-
WalletChainTypeEnum2["onlySOL"] = "onlySOL";
|
|
161
|
-
WalletChainTypeEnum2["EVM_SOL"] = "EVM_SOL";
|
|
162
|
-
return WalletChainTypeEnum2;
|
|
163
|
-
})(WalletChainTypeEnum || {});
|
|
286
|
+
switchChain,
|
|
287
|
+
linkedAccount,
|
|
288
|
+
exportWallet,
|
|
289
|
+
createEvmWallet,
|
|
290
|
+
createSolanaWallet
|
|
291
|
+
]
|
|
292
|
+
);
|
|
293
|
+
return /* @__PURE__ */ React12__default.default.createElement(PrivyWalletContext.Provider, { value }, children);
|
|
294
|
+
};
|
|
295
|
+
function usePrivyWallet() {
|
|
296
|
+
const context = React12.useContext(PrivyWalletContext);
|
|
297
|
+
if (!context) {
|
|
298
|
+
throw new Error("usePrivyWallet must be used within a PrivyWalletProvider");
|
|
299
|
+
}
|
|
300
|
+
return context;
|
|
301
|
+
}
|
|
164
302
|
var SolanaWalletContext = React12.createContext(
|
|
165
303
|
null
|
|
166
304
|
);
|
|
@@ -386,231 +524,102 @@ function useSolanaWallet() {
|
|
|
386
524
|
}
|
|
387
525
|
return context;
|
|
388
526
|
}
|
|
389
|
-
var
|
|
390
|
-
|
|
391
|
-
return null;
|
|
392
|
-
}
|
|
393
|
-
return parseInt(chainId.split("eip155:")[1]);
|
|
394
|
-
};
|
|
395
|
-
var PrivyWalletContext = React12.createContext(null);
|
|
396
|
-
var PrivyWalletProvider = ({
|
|
527
|
+
var WagmiWalletContext = React12.createContext(null);
|
|
528
|
+
var WagmiWalletProvider = ({
|
|
397
529
|
children
|
|
398
530
|
}) => {
|
|
399
|
-
const {
|
|
400
|
-
const
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
createWallet: createEvmWallet
|
|
408
|
-
} = reactAuth.usePrivy();
|
|
409
|
-
const { wallets: walletsEVM } = connectorWalletType.disablePrivy ? { wallets: [] } : reactAuth.useWallets();
|
|
410
|
-
const connectedRef = React12.useRef(false);
|
|
411
|
-
const {
|
|
412
|
-
ready: solanaReady,
|
|
413
|
-
wallets: walletsSOL,
|
|
414
|
-
createWallet: createSolanaWallet,
|
|
415
|
-
exportWallet: exportSolanaWallet
|
|
416
|
-
} = connectorWalletType.disablePrivy ? { ready: false, wallets: [], createWallet: () => Promise.resolve(), exportWallet: () => Promise.resolve() } : reactAuth.useSolanaWallets();
|
|
417
|
-
const [walletEVM, setWalletEVM] = React12.useState(null);
|
|
418
|
-
const [walletSOL, setWalletSOL] = React12.useState(null);
|
|
419
|
-
const { track } = hooks.useTrack();
|
|
420
|
-
const linkedAccount = React12.useMemo(() => {
|
|
421
|
-
if (user && user.linkedAccounts) {
|
|
422
|
-
const account = user.linkedAccounts.filter((item) => item.type !== "wallet").sort(
|
|
423
|
-
(a, b) => (b.latestVerifiedAt?.getTime() ?? 0) - (a.latestVerifiedAt?.getTime() ?? 0)
|
|
424
|
-
)[0];
|
|
425
|
-
let address = null;
|
|
426
|
-
if (account.type === "email") {
|
|
427
|
-
address = account.address;
|
|
428
|
-
} else if (account.type === "twitter_oauth") {
|
|
429
|
-
address = `@${account.username}`;
|
|
430
|
-
} else if (account.type === "google_oauth") {
|
|
431
|
-
address = `@${account.name}`;
|
|
432
|
-
}
|
|
531
|
+
const { connectorWalletType } = useWalletConnectorPrivy();
|
|
532
|
+
const [wallet, setWallet] = React12.useState(void 0);
|
|
533
|
+
const { connect, connectors: wagmiConnectors2 } = connectorWalletType.disableWagmi ? { connect: () => Promise.resolve(), connectors: [] } : WagmiExport.useConnect();
|
|
534
|
+
const { disconnect } = connectorWalletType.disableWagmi ? { disconnect: () => Promise.resolve() } : WagmiExport.useDisconnect();
|
|
535
|
+
const { connector, isConnected, address, chainId } = connectorWalletType.disableWagmi ? { connector: null, isConnected: false, address: null, chainId: null } : WagmiExport.useAccount();
|
|
536
|
+
const { switchChain } = connectorWalletType.disableWagmi ? { switchChain: () => Promise.resolve() } : WagmiExport.useSwitchChain();
|
|
537
|
+
const connectedChain = React12.useMemo(() => {
|
|
538
|
+
if (chainId) {
|
|
433
539
|
return {
|
|
434
|
-
|
|
435
|
-
|
|
540
|
+
id: chainId,
|
|
541
|
+
namespace: types.ChainNamespace.evm
|
|
436
542
|
};
|
|
437
543
|
}
|
|
438
544
|
return null;
|
|
439
|
-
}, [
|
|
440
|
-
const
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
};
|
|
453
|
-
const exportWallet = (namespace) => {
|
|
454
|
-
if (namespace === types.ChainNamespace.evm) {
|
|
455
|
-
track(types.EnumTrackerKeys.clickExportPrivateKey, {
|
|
456
|
-
type: "evm"
|
|
457
|
-
});
|
|
458
|
-
return exportEvmWallet();
|
|
459
|
-
} else if (namespace === types.ChainNamespace.solana) {
|
|
460
|
-
track(types.EnumTrackerKeys.clickExportPrivateKey, {
|
|
461
|
-
type: "solana"
|
|
545
|
+
}, [chainId]);
|
|
546
|
+
const setChain = React12.useCallback(
|
|
547
|
+
(chainId2) => {
|
|
548
|
+
return new Promise((resolve, reject) => {
|
|
549
|
+
switchChain(
|
|
550
|
+
{ chainId: chainId2 },
|
|
551
|
+
{
|
|
552
|
+
onSuccess: () => resolve(true),
|
|
553
|
+
onError: (e) => {
|
|
554
|
+
return reject(e);
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
);
|
|
462
558
|
});
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
};
|
|
467
|
-
const isConnected = React12.useMemo(() => {
|
|
468
|
-
if (ready && authenticated) {
|
|
469
|
-
return true;
|
|
470
|
-
}
|
|
471
|
-
return false;
|
|
472
|
-
}, [ready, authenticated]);
|
|
559
|
+
},
|
|
560
|
+
[switchChain]
|
|
561
|
+
);
|
|
473
562
|
React12.useEffect(() => {
|
|
474
|
-
if (!
|
|
475
|
-
|
|
563
|
+
if (!connector || !isConnected) {
|
|
564
|
+
setWallet(void 0);
|
|
476
565
|
return;
|
|
477
566
|
}
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
label: "privy",
|
|
567
|
+
connector.getProvider().then((provider) => {
|
|
568
|
+
setWallet({
|
|
569
|
+
label: connector.name,
|
|
482
570
|
icon: "",
|
|
483
571
|
provider,
|
|
484
572
|
accounts: [
|
|
485
573
|
{
|
|
486
|
-
address
|
|
574
|
+
address
|
|
487
575
|
}
|
|
488
576
|
],
|
|
489
577
|
chains: [
|
|
490
578
|
{
|
|
491
|
-
id:
|
|
579
|
+
id: chainId,
|
|
492
580
|
namespace: types.ChainNamespace.evm
|
|
493
581
|
}
|
|
494
582
|
],
|
|
495
|
-
chain:
|
|
496
|
-
id: getPrivyEmbeddedWalletChainId(wallet.chainId) ?? 1,
|
|
497
|
-
namespace: types.ChainNamespace.evm
|
|
498
|
-
}
|
|
583
|
+
chain: connectedChain
|
|
499
584
|
});
|
|
500
585
|
});
|
|
501
|
-
}, [
|
|
502
|
-
React12.
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
return;
|
|
506
|
-
}
|
|
507
|
-
if (!solanaReady) {
|
|
508
|
-
return;
|
|
509
|
-
}
|
|
510
|
-
if (!user) {
|
|
511
|
-
return;
|
|
512
|
-
}
|
|
513
|
-
const embededSolanaWallet = (user?.linkedAccounts).find(
|
|
514
|
-
(item) => item.chainType === "solana" && item.connectorType === "embedded"
|
|
586
|
+
}, [connector, chainId, isConnected, address, connectedChain]);
|
|
587
|
+
const connectors = React12.useMemo(() => {
|
|
588
|
+
return wagmiConnectors2.filter((connector2) => connector2.id !== "injected").sort(
|
|
589
|
+
(a, b) => a.type === "injected" ? -1 : 1
|
|
515
590
|
);
|
|
516
|
-
|
|
517
|
-
createSolanaWallet().then();
|
|
518
|
-
return;
|
|
519
|
-
}
|
|
520
|
-
if (!walletsSOL || !walletsSOL[0]) {
|
|
521
|
-
return;
|
|
522
|
-
}
|
|
523
|
-
const wallet = walletsSOL.find((w) => w.connectorType === "embedded");
|
|
524
|
-
if (wallet) {
|
|
525
|
-
if (walletSOL && wallet.address === walletSOL.accounts[0].address) {
|
|
526
|
-
if (walletSOL.chain.id === SolanaChainsMap.get(network)) {
|
|
527
|
-
return;
|
|
528
|
-
}
|
|
529
|
-
}
|
|
530
|
-
setWalletSOL({
|
|
531
|
-
label: "privy",
|
|
532
|
-
icon: "",
|
|
533
|
-
provider: {
|
|
534
|
-
signMessage: wallet.signMessage,
|
|
535
|
-
signTransaction: wallet.signTransaction,
|
|
536
|
-
sendTransaction: wallet.sendTransaction,
|
|
537
|
-
network: solanaInfo?.network ?? walletAdapterBase.WalletAdapterNetwork.Devnet,
|
|
538
|
-
rpcUrl: solanaInfo?.rpcUrl ?? void 0
|
|
539
|
-
},
|
|
540
|
-
accounts: [
|
|
541
|
-
{
|
|
542
|
-
address: wallet.address
|
|
543
|
-
}
|
|
544
|
-
],
|
|
545
|
-
chains: [
|
|
546
|
-
{
|
|
547
|
-
id: SolanaChainsMap.get(network),
|
|
548
|
-
namespace: types.ChainNamespace.solana
|
|
549
|
-
}
|
|
550
|
-
],
|
|
551
|
-
chain: {
|
|
552
|
-
id: SolanaChainsMap.get(network),
|
|
553
|
-
namespace: types.ChainNamespace.solana
|
|
554
|
-
}
|
|
555
|
-
});
|
|
556
|
-
}
|
|
557
|
-
}, [
|
|
558
|
-
walletsSOL,
|
|
559
|
-
authenticated,
|
|
560
|
-
createSolanaWallet,
|
|
561
|
-
solanaReady,
|
|
562
|
-
user,
|
|
563
|
-
walletSOL,
|
|
564
|
-
network,
|
|
565
|
-
solanaInfo
|
|
566
|
-
]);
|
|
567
|
-
React12.useEffect(() => {
|
|
568
|
-
if (isConnected && linkedAccount) {
|
|
569
|
-
if (connectedRef.current) {
|
|
570
|
-
return;
|
|
571
|
-
}
|
|
572
|
-
connectedRef.current = true;
|
|
573
|
-
track(types.EnumTrackerKeys.socialLoginSuccess, {
|
|
574
|
-
type: linkedAccount.type,
|
|
575
|
-
address: linkedAccount.address
|
|
576
|
-
});
|
|
577
|
-
}
|
|
578
|
-
}, [isConnected, linkedAccount, connectedRef]);
|
|
591
|
+
}, [wagmiConnectors2]);
|
|
579
592
|
const value = React12.useMemo(
|
|
580
593
|
() => ({
|
|
594
|
+
connectors,
|
|
581
595
|
connect,
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
596
|
+
wallet,
|
|
597
|
+
connectedChain,
|
|
598
|
+
setChain,
|
|
585
599
|
disconnect,
|
|
586
|
-
|
|
587
|
-
linkedAccount,
|
|
588
|
-
exportWallet,
|
|
589
|
-
createEvmWallet,
|
|
590
|
-
createSolanaWallet
|
|
600
|
+
isConnected
|
|
591
601
|
}),
|
|
592
602
|
[
|
|
603
|
+
connectors,
|
|
593
604
|
connect,
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
605
|
+
wallet,
|
|
606
|
+
connectedChain,
|
|
607
|
+
setChain,
|
|
597
608
|
disconnect,
|
|
598
|
-
|
|
599
|
-
linkedAccount,
|
|
600
|
-
exportWallet,
|
|
601
|
-
createEvmWallet,
|
|
602
|
-
createSolanaWallet
|
|
609
|
+
isConnected
|
|
603
610
|
]
|
|
604
611
|
);
|
|
605
|
-
return /* @__PURE__ */ React12__default.default.createElement(
|
|
612
|
+
return /* @__PURE__ */ React12__default.default.createElement(WagmiWalletContext.Provider, { value }, children);
|
|
606
613
|
};
|
|
607
|
-
function
|
|
608
|
-
const context = React12.useContext(
|
|
614
|
+
function useWagmiWallet() {
|
|
615
|
+
const context = React12.useContext(WagmiWalletContext);
|
|
609
616
|
if (!context) {
|
|
610
|
-
throw new Error("
|
|
617
|
+
throw new Error("useWagmiWallet must be used within a WagmiWalletProvider");
|
|
611
618
|
}
|
|
612
619
|
return context;
|
|
613
620
|
}
|
|
621
|
+
|
|
622
|
+
// src/hooks/useWallet.tsx
|
|
614
623
|
function useWallet2() {
|
|
615
624
|
const { track } = hooks.useTrack();
|
|
616
625
|
const { walletChainType } = useWalletConnectorPrivy();
|
|
@@ -682,7 +691,7 @@ function useWallet2() {
|
|
|
682
691
|
}
|
|
683
692
|
isManual.current = true;
|
|
684
693
|
return setChainPrivy(parseInt(chain.chainId)).then((res) => {
|
|
685
|
-
track(types.
|
|
694
|
+
track(types.TrackerEventName.switchNetworkSuccess, {
|
|
686
695
|
from_chain: storageChain?.chainId,
|
|
687
696
|
to_chain: chain.chainId
|
|
688
697
|
});
|
|
@@ -711,7 +720,7 @@ function useWallet2() {
|
|
|
711
720
|
if (tempNamespace === types.ChainNamespace.evm) {
|
|
712
721
|
await setChainEvm(parseInt(chain.chainId));
|
|
713
722
|
setStorageChain(parseInt(chain.chainId));
|
|
714
|
-
track(types.
|
|
723
|
+
track(types.TrackerEventName.switchNetworkSuccess, {
|
|
715
724
|
from_chain: storageChain?.chainId,
|
|
716
725
|
to_chain: chain.chainId
|
|
717
726
|
});
|
|
@@ -767,7 +776,7 @@ function useWallet2() {
|
|
|
767
776
|
}
|
|
768
777
|
}
|
|
769
778
|
}
|
|
770
|
-
track(types.
|
|
779
|
+
track(types.TrackerEventName.clickSwitchWallet, {
|
|
771
780
|
fromWallet,
|
|
772
781
|
toWallet
|
|
773
782
|
});
|
|
@@ -2120,12 +2129,10 @@ function InitSolanaProvider({
|
|
|
2120
2129
|
} else {
|
|
2121
2130
|
rpcUrl = devnetRpc ?? null;
|
|
2122
2131
|
}
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
});
|
|
2128
|
-
}
|
|
2132
|
+
setSolanaInfo({
|
|
2133
|
+
rpcUrl,
|
|
2134
|
+
network: network === "mainnet" ? walletAdapterBase.WalletAdapterNetwork.Mainnet : walletAdapterBase.WalletAdapterNetwork.Devnet
|
|
2135
|
+
});
|
|
2129
2136
|
}, [network, mainnetRpc, devnetRpc, setSolanaInfo]);
|
|
2130
2137
|
return /* @__PURE__ */ React12__default.default.createElement(walletAdapterReact.WalletProvider, { wallets, onError }, children);
|
|
2131
2138
|
}
|