@orderly.network/wallet-connector 2.5.3 → 2.6.0-alpha.0
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 +145 -139
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +145 -139
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
package/dist/index.d.mts
CHANGED
|
@@ -21,6 +21,6 @@ interface WalletConnectorProviderProps {
|
|
|
21
21
|
solanaInitial?: SolanaInitialProps;
|
|
22
22
|
evmInitial?: EvmInitialProps;
|
|
23
23
|
}
|
|
24
|
-
declare
|
|
24
|
+
declare const WalletConnectorProvider: React.FC<PropsWithChildren<WalletConnectorProviderProps>>;
|
|
25
25
|
|
|
26
26
|
export { WalletConnectorProvider };
|
package/dist/index.d.ts
CHANGED
|
@@ -21,6 +21,6 @@ interface WalletConnectorProviderProps {
|
|
|
21
21
|
solanaInitial?: SolanaInitialProps;
|
|
22
22
|
evmInitial?: EvmInitialProps;
|
|
23
23
|
}
|
|
24
|
-
declare
|
|
24
|
+
declare const WalletConnectorProvider: React.FC<PropsWithChildren<WalletConnectorProviderProps>>;
|
|
25
25
|
|
|
26
26
|
export { WalletConnectorProvider };
|
package/dist/index.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
|
-
var hooks = require('@orderly.network/hooks');
|
|
5
|
-
var utils = require('@orderly.network/utils');
|
|
6
|
-
var types = require('@orderly.network/types');
|
|
7
4
|
var walletAdapterBase = require('@solana/wallet-adapter-base');
|
|
5
|
+
var types = require('@orderly.network/types');
|
|
6
|
+
var walletAdapterMobile = require('@solana-mobile/wallet-adapter-mobile');
|
|
8
7
|
var walletAdapterReact = require('@solana/wallet-adapter-react');
|
|
9
8
|
var walletAdapterReactUi = require('@solana/wallet-adapter-react-ui');
|
|
10
|
-
var ui = require('@orderly.network/ui');
|
|
11
|
-
var walletAdapterMobile = require('@solana-mobile/wallet-adapter-mobile');
|
|
12
9
|
var walletAdapterWallets = require('@solana/wallet-adapter-wallets');
|
|
10
|
+
var ui = require('@orderly.network/ui');
|
|
11
|
+
var utils = require('@orderly.network/utils');
|
|
13
12
|
require('@solana/wallet-adapter-react-ui/styles.css');
|
|
13
|
+
var hooks = require('@orderly.network/hooks');
|
|
14
14
|
var injectedModule = require('@web3-onboard/injected-wallets');
|
|
15
15
|
var react = require('@web3-onboard/react');
|
|
16
16
|
var binanceModule = require('@binance/w3w-blocknative-connector');
|
|
@@ -22,7 +22,7 @@ var React__default = /*#__PURE__*/_interopDefault(React);
|
|
|
22
22
|
var injectedModule__default = /*#__PURE__*/_interopDefault(injectedModule);
|
|
23
23
|
var binanceModule__default = /*#__PURE__*/_interopDefault(binanceModule);
|
|
24
24
|
|
|
25
|
-
// src/
|
|
25
|
+
// src/provider.tsx
|
|
26
26
|
var SolanaContext = React.createContext({
|
|
27
27
|
network: walletAdapterBase.WalletAdapterNetwork.Devnet,
|
|
28
28
|
endpoint: ""
|
|
@@ -139,8 +139,114 @@ var initConfig = (apiKey, options) => {
|
|
|
139
139
|
return react.init(mergedOptions);
|
|
140
140
|
};
|
|
141
141
|
var SolanaChains = /* @__PURE__ */ new Map([[walletAdapterBase.WalletAdapterNetwork.Devnet, 901901901], [walletAdapterBase.WalletAdapterNetwork.Mainnet, 900900900]]);
|
|
142
|
-
|
|
143
|
-
|
|
142
|
+
function InitEvm(props) {
|
|
143
|
+
const [initialized, setInitialized] = React.useState(!!props.skipInit);
|
|
144
|
+
const { get, register } = hooks.useSimpleDI();
|
|
145
|
+
React.useEffect(() => {
|
|
146
|
+
document.body.style.setProperty("--onboard-modal-z-index", "88");
|
|
147
|
+
}, []);
|
|
148
|
+
React.useEffect(() => {
|
|
149
|
+
if (props.skipInit) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
let onboardAPI = get("onboardAPI");
|
|
153
|
+
if (onboardAPI) {
|
|
154
|
+
console.log("[Orderly SDK]:onboardAPI already initialized");
|
|
155
|
+
setInitialized(true);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
Promise.all([
|
|
159
|
+
fetchChainInfo("https://testnet-api.orderly.org/v1/public/chain_info"),
|
|
160
|
+
fetchChainInfo("https://api.orderly.org/v1/public/chain_info")
|
|
161
|
+
]).then(([testChainInfo, mainnetChainInfo]) => {
|
|
162
|
+
const testChains = processChainInfo(testChainInfo);
|
|
163
|
+
const mainnetChains = processChainInfo(mainnetChainInfo);
|
|
164
|
+
let options = props.options || {};
|
|
165
|
+
options = lodash.merge({ chains: [...testChains, ...mainnetChains] }, options);
|
|
166
|
+
onboardAPI = initConfig(props.apiKey, options);
|
|
167
|
+
register("onboardAPI", onboardAPI);
|
|
168
|
+
setInitialized(true);
|
|
169
|
+
}).catch((error) => {
|
|
170
|
+
console.error("Error fetching data:", error);
|
|
171
|
+
});
|
|
172
|
+
}, []);
|
|
173
|
+
if (!initialized)
|
|
174
|
+
return null;
|
|
175
|
+
return props.children;
|
|
176
|
+
}
|
|
177
|
+
var fetchChainInfo = async (url) => {
|
|
178
|
+
const response = await fetch(url);
|
|
179
|
+
if (!response.ok) {
|
|
180
|
+
throw new Error(`Failed to fetch data from ${url}`);
|
|
181
|
+
}
|
|
182
|
+
return response.json();
|
|
183
|
+
};
|
|
184
|
+
var processChainInfo = (chainInfo) => chainInfo?.data?.rows?.map((row) => ({
|
|
185
|
+
id: Number(row.chain_id),
|
|
186
|
+
token: row.currency_symbol,
|
|
187
|
+
label: row.name,
|
|
188
|
+
rpcUrl: row.public_rpc_url,
|
|
189
|
+
blockExplorerUrl: row.explorer_base_url
|
|
190
|
+
})) || [];
|
|
191
|
+
function useEvm() {
|
|
192
|
+
const [
|
|
193
|
+
{
|
|
194
|
+
wallet,
|
|
195
|
+
// the wallet that has been connected or null if not yet connected
|
|
196
|
+
connecting
|
|
197
|
+
// boolean indicating if connection is in progress
|
|
198
|
+
},
|
|
199
|
+
connect,
|
|
200
|
+
// function to call to initiate user to connect wallet
|
|
201
|
+
evmDisconnect,
|
|
202
|
+
// function to call with wallet<DisconnectOptions> to disconnect wallet
|
|
203
|
+
updateBalances,
|
|
204
|
+
// function to be called with an optional array of wallet addresses connected through Onboard to update balance or empty/no params to update all connected wallets
|
|
205
|
+
setWalletModules,
|
|
206
|
+
// function to be called with an array of wallet modules to conditionally allow connection of wallet types i.e. setWalletModules([ledger, trezor, injected])
|
|
207
|
+
setPrimaryWallet
|
|
208
|
+
// function that can set the primary wallet and/or primary account within that wallet. The wallet that is set needs to be passed in for the first parameter and if you would like to set the primary account, the address of that account also needs to be passed in
|
|
209
|
+
] = react.useConnectWallet();
|
|
210
|
+
const [
|
|
211
|
+
{
|
|
212
|
+
chains,
|
|
213
|
+
// the list of chains that web3-onboard was initialized with
|
|
214
|
+
connectedChain: evmConnectChain,
|
|
215
|
+
// the current chain the user's wallet is connected to
|
|
216
|
+
settingChain
|
|
217
|
+
// boolean indicating if the chain is in the process of being set
|
|
218
|
+
},
|
|
219
|
+
setChain
|
|
220
|
+
// function to call to initiate user to switch chains in their wallet
|
|
221
|
+
] = react.useSetChain();
|
|
222
|
+
const connected = React.useMemo(() => {
|
|
223
|
+
return !!(wallet && wallet.accounts && wallet.accounts[0] && wallet.accounts[0].address);
|
|
224
|
+
}, [wallet]);
|
|
225
|
+
const disconnect = async () => {
|
|
226
|
+
console.log("-- disconnect evm xxxxxxxxxxxx");
|
|
227
|
+
if (!wallet) {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
return evmDisconnect({
|
|
231
|
+
label: wallet.label
|
|
232
|
+
});
|
|
233
|
+
};
|
|
234
|
+
const connectedChain = React.useMemo(() => {
|
|
235
|
+
return evmConnectChain ? { ...evmConnectChain, id: parseInt(evmConnectChain.id) } : null;
|
|
236
|
+
}, [evmConnectChain]);
|
|
237
|
+
const changeChain = (chain) => {
|
|
238
|
+
return setChain(chain);
|
|
239
|
+
};
|
|
240
|
+
return {
|
|
241
|
+
connect,
|
|
242
|
+
connected,
|
|
243
|
+
disconnect,
|
|
244
|
+
connecting,
|
|
245
|
+
wallet,
|
|
246
|
+
connectedChain,
|
|
247
|
+
changeChain
|
|
248
|
+
};
|
|
249
|
+
}
|
|
144
250
|
function useSOL() {
|
|
145
251
|
const [wallet, setWallet] = React.useState(null);
|
|
146
252
|
const { isMobile } = ui.useScreen();
|
|
@@ -402,68 +508,9 @@ function useSOL() {
|
|
|
402
508
|
connectedChain
|
|
403
509
|
};
|
|
404
510
|
}
|
|
405
|
-
function useEvm() {
|
|
406
|
-
const [
|
|
407
|
-
{
|
|
408
|
-
wallet,
|
|
409
|
-
// the wallet that has been connected or null if not yet connected
|
|
410
|
-
connecting
|
|
411
|
-
// boolean indicating if connection is in progress
|
|
412
|
-
},
|
|
413
|
-
connect,
|
|
414
|
-
// function to call to initiate user to connect wallet
|
|
415
|
-
evmDisconnect,
|
|
416
|
-
// function to call with wallet<DisconnectOptions> to disconnect wallet
|
|
417
|
-
updateBalances,
|
|
418
|
-
// function to be called with an optional array of wallet addresses connected through Onboard to update balance or empty/no params to update all connected wallets
|
|
419
|
-
setWalletModules,
|
|
420
|
-
// function to be called with an array of wallet modules to conditionally allow connection of wallet types i.e. setWalletModules([ledger, trezor, injected])
|
|
421
|
-
setPrimaryWallet
|
|
422
|
-
// function that can set the primary wallet and/or primary account within that wallet. The wallet that is set needs to be passed in for the first parameter and if you would like to set the primary account, the address of that account also needs to be passed in
|
|
423
|
-
] = react.useConnectWallet();
|
|
424
|
-
const [
|
|
425
|
-
{
|
|
426
|
-
chains,
|
|
427
|
-
// the list of chains that web3-onboard was initialized with
|
|
428
|
-
connectedChain: evmConnectChain,
|
|
429
|
-
// the current chain the user's wallet is connected to
|
|
430
|
-
settingChain
|
|
431
|
-
// boolean indicating if the chain is in the process of being set
|
|
432
|
-
},
|
|
433
|
-
setChain
|
|
434
|
-
// function to call to initiate user to switch chains in their wallet
|
|
435
|
-
] = react.useSetChain();
|
|
436
|
-
const connected = React.useMemo(() => {
|
|
437
|
-
return !!(wallet && wallet.accounts && wallet.accounts[0] && wallet.accounts[0].address);
|
|
438
|
-
}, [wallet]);
|
|
439
|
-
const disconnect = async () => {
|
|
440
|
-
console.log("-- disconnect evm xxxxxxxxxxxx");
|
|
441
|
-
if (!wallet) {
|
|
442
|
-
return;
|
|
443
|
-
}
|
|
444
|
-
return evmDisconnect({
|
|
445
|
-
label: wallet.label
|
|
446
|
-
});
|
|
447
|
-
};
|
|
448
|
-
const connectedChain = React.useMemo(() => {
|
|
449
|
-
return evmConnectChain ? { ...evmConnectChain, id: parseInt(evmConnectChain.id) } : null;
|
|
450
|
-
}, [evmConnectChain]);
|
|
451
|
-
const changeChain = (chain) => {
|
|
452
|
-
return setChain(chain);
|
|
453
|
-
};
|
|
454
|
-
return {
|
|
455
|
-
connect,
|
|
456
|
-
connected,
|
|
457
|
-
disconnect,
|
|
458
|
-
connecting,
|
|
459
|
-
wallet,
|
|
460
|
-
connectedChain,
|
|
461
|
-
changeChain
|
|
462
|
-
};
|
|
463
|
-
}
|
|
464
511
|
|
|
465
512
|
// src/main.tsx
|
|
466
|
-
|
|
513
|
+
var Main = (props) => {
|
|
467
514
|
const sol = useSOL();
|
|
468
515
|
const evm = useEvm();
|
|
469
516
|
const [namespace, setNamespace] = React.useState(null);
|
|
@@ -472,7 +519,6 @@ function Main(props) {
|
|
|
472
519
|
if (Array.from(SolanaChains.values()).includes(options.chainId)) {
|
|
473
520
|
newNamespace.current = types.ChainNamespace.solana;
|
|
474
521
|
return sol.connect().then((res) => {
|
|
475
|
-
console.log("-- connect sol", res);
|
|
476
522
|
if (res) {
|
|
477
523
|
return res;
|
|
478
524
|
}
|
|
@@ -483,13 +529,11 @@ function Main(props) {
|
|
|
483
529
|
autoSelect: options.autoSelect
|
|
484
530
|
} : void 0;
|
|
485
531
|
return evm.connect(evmOption).then((res) => {
|
|
486
|
-
console.log("-- connect evm", res);
|
|
487
532
|
if (!res.length) {
|
|
488
533
|
return Promise.reject({ message: "user reject" });
|
|
489
534
|
}
|
|
490
535
|
return res;
|
|
491
536
|
}).catch((e) => {
|
|
492
|
-
console.log("-- connect evm error", e);
|
|
493
537
|
return Promise.reject(e);
|
|
494
538
|
});
|
|
495
539
|
};
|
|
@@ -510,10 +554,6 @@ function Main(props) {
|
|
|
510
554
|
if (Array.from(SolanaChains.values()).includes(chainId)) {
|
|
511
555
|
tempNamespace = types.ChainNamespace.solana;
|
|
512
556
|
}
|
|
513
|
-
console.log("--- namespace", {
|
|
514
|
-
namespace,
|
|
515
|
-
tempNamespace
|
|
516
|
-
});
|
|
517
557
|
if (namespace === tempNamespace && namespace === types.ChainNamespace.evm) {
|
|
518
558
|
return evm.changeChain(chain);
|
|
519
559
|
}
|
|
@@ -542,74 +582,40 @@ function Main(props) {
|
|
|
542
582
|
return;
|
|
543
583
|
}
|
|
544
584
|
}, [newNamespace.current, sol.connected, evm.connected]);
|
|
545
|
-
|
|
546
|
-
|
|
585
|
+
const memoizedValue = React.useMemo(() => {
|
|
586
|
+
return {
|
|
587
|
+
connect,
|
|
588
|
+
disconnect,
|
|
589
|
+
connecting,
|
|
590
|
+
wallet,
|
|
591
|
+
setChain,
|
|
592
|
+
connectedChain,
|
|
593
|
+
namespace,
|
|
594
|
+
chains: [],
|
|
595
|
+
settingChain: false
|
|
596
|
+
};
|
|
597
|
+
}, [
|
|
598
|
+
connect,
|
|
599
|
+
disconnect,
|
|
600
|
+
connecting,
|
|
601
|
+
wallet,
|
|
602
|
+
setChain,
|
|
603
|
+
connectedChain,
|
|
604
|
+
namespace
|
|
605
|
+
]);
|
|
606
|
+
return /* @__PURE__ */ React__default.default.createElement(hooks.WalletConnectorContext.Provider, { value: memoizedValue }, props.children);
|
|
607
|
+
};
|
|
608
|
+
|
|
609
|
+
// src/provider.tsx
|
|
610
|
+
var WalletConnectorProvider = (props) => {
|
|
611
|
+
return /* @__PURE__ */ React__default.default.createElement(SolanaProvider, { ...props.solanaInitial ?? types.EMPTY_OBJECT }, /* @__PURE__ */ React__default.default.createElement(InitEvm, { ...props.evmInitial ?? types.EMPTY_OBJECT }, /* @__PURE__ */ React__default.default.createElement(
|
|
612
|
+
Main,
|
|
547
613
|
{
|
|
548
|
-
|
|
549
|
-
connect,
|
|
550
|
-
disconnect,
|
|
551
|
-
connecting,
|
|
552
|
-
wallet,
|
|
553
|
-
setChain,
|
|
554
|
-
connectedChain,
|
|
555
|
-
namespace
|
|
556
|
-
}
|
|
614
|
+
solanaNetwork: props.solanaInitial?.network ?? walletAdapterBase.WalletAdapterNetwork.Devnet
|
|
557
615
|
},
|
|
558
616
|
props.children
|
|
559
|
-
);
|
|
560
|
-
}
|
|
561
|
-
function InitEvm(props) {
|
|
562
|
-
const [initialized, setInitialized] = React.useState(!!props.skipInit);
|
|
563
|
-
const { get, register } = hooks.useSimpleDI();
|
|
564
|
-
React.useEffect(() => {
|
|
565
|
-
document.body.style.setProperty("--onboard-modal-z-index", "88");
|
|
566
|
-
}, []);
|
|
567
|
-
React.useEffect(() => {
|
|
568
|
-
if (props.skipInit) {
|
|
569
|
-
return;
|
|
570
|
-
}
|
|
571
|
-
let onboardAPI = get("onboardAPI");
|
|
572
|
-
if (onboardAPI) {
|
|
573
|
-
console.log("[Orderly SDK]:onboardAPI already initialized");
|
|
574
|
-
setInitialized(true);
|
|
575
|
-
return;
|
|
576
|
-
}
|
|
577
|
-
Promise.all([
|
|
578
|
-
fetchChainInfo("https://testnet-api.orderly.org/v1/public/chain_info"),
|
|
579
|
-
fetchChainInfo("https://api.orderly.org/v1/public/chain_info")
|
|
580
|
-
]).then(([testChainInfo, mainnetChainInfo]) => {
|
|
581
|
-
const testChains = processChainInfo(testChainInfo);
|
|
582
|
-
const mainnetChains = processChainInfo(mainnetChainInfo);
|
|
583
|
-
let options = props.options || {};
|
|
584
|
-
options = lodash.merge({ chains: [...testChains, ...mainnetChains] }, options);
|
|
585
|
-
onboardAPI = initConfig(props.apiKey, options);
|
|
586
|
-
register("onboardAPI", onboardAPI);
|
|
587
|
-
setInitialized(true);
|
|
588
|
-
}).catch((error) => {
|
|
589
|
-
console.error("Error fetching data:", error);
|
|
590
|
-
});
|
|
591
|
-
}, []);
|
|
592
|
-
if (!initialized)
|
|
593
|
-
return null;
|
|
594
|
-
return props.children;
|
|
595
|
-
}
|
|
596
|
-
var fetchChainInfo = async (url) => {
|
|
597
|
-
const response = await fetch(url);
|
|
598
|
-
if (!response.ok) {
|
|
599
|
-
throw new Error(`Failed to fetch data from ${url}`);
|
|
600
|
-
}
|
|
601
|
-
return response.json();
|
|
617
|
+
)));
|
|
602
618
|
};
|
|
603
|
-
var processChainInfo = (chainInfo) => chainInfo?.data?.rows?.map((row) => ({
|
|
604
|
-
id: Number(row.chain_id),
|
|
605
|
-
token: row.currency_symbol,
|
|
606
|
-
label: row.name,
|
|
607
|
-
rpcUrl: row.public_rpc_url,
|
|
608
|
-
blockExplorerUrl: row.explorer_base_url
|
|
609
|
-
})) || [];
|
|
610
|
-
function WalletConnectorProvider(props) {
|
|
611
|
-
return /* @__PURE__ */ React__default.default.createElement(SolanaProvider, { ...props.solanaInitial ?? {} }, /* @__PURE__ */ React__default.default.createElement(InitEvm, { ...props.evmInitial ?? {} }, /* @__PURE__ */ React__default.default.createElement(Main, { solanaNetwork: props.solanaInitial?.network ?? walletAdapterBase.WalletAdapterNetwork.Devnet }, props.children)));
|
|
612
|
-
}
|
|
613
619
|
|
|
614
620
|
exports.WalletConnectorProvider = WalletConnectorProvider;
|
|
615
621
|
//# sourceMappingURL=out.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.tsx","../src/useSOL.tsx","../src/SolanaProvider.tsx","../src/config.ts","../src/useEvm.tsx","../src/provider.tsx","../src/initEvm.tsx"],"names":["React","useEffect","useRef","useState","ChainNamespace","useMemo","WalletAdapterNetwork","WalletNotReadyError","useScreen","wallet","signMessage","signTransaction","sendTransaction","merge"],"mappings":"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","sourcesContent":["import React, {\n type PropsWithChildren,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { WalletConnectorContext } from \"@orderly.network/hooks\";\nimport { hex2int, int2hex } from \"@orderly.network/utils\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport { useSOL } from \"./useSOL\";\nimport { useEvm } from \"./useEvm\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\nimport { SolanaChains } from \"./config\";\n\nexport function Main(\n props: PropsWithChildren<{ solanaNetwork: WalletAdapterNetwork }>\n) {\n const sol = useSOL();\n const evm = useEvm();\n\n const [namespace, setNamespace] = useState<ChainNamespace | null>(null);\n\n const newNamespace = useRef<ChainNamespace | null>();\n\n const connect = async (options: any) => {\n if (Array.from(SolanaChains.values()).includes(options.chainId)) {\n newNamespace.current = ChainNamespace.solana;\n // connect solana\n return sol.connect().then((res) => {\n console.log(\"-- connect sol\", res);\n if (res) {\n return res;\n }\n });\n }\n newNamespace.current = ChainNamespace.evm;\n const evmOption = options.autoSelect\n ? {\n autoSelect: options.autoSelect,\n }\n :undefined;\n\n return evm\n .connect(evmOption)\n .then((res) => {\n console.log(\"-- connect evm\", res);\n if (!res.length) {\n return Promise.reject({ message: \"user reject\" });\n }\n return res;\n })\n .catch((e) => {\n console.log(\"-- connect evm error\", e);\n return Promise.reject(e);\n });\n };\n\n const disconnect = async () => {\n if (namespace === ChainNamespace.evm) {\n return evm.disconnect();\n }\n if (namespace === ChainNamespace.solana) {\n return sol.disconnect();\n }\n };\n\n const connecting =\n newNamespace.current == ChainNamespace.solana\n ? sol.connecting\n : evm.connecting;\n\n // console.log('-- connecting', connecting);\n\n const wallet =\n namespace === ChainNamespace.solana && sol.connected\n ? sol.wallet\n : namespace === ChainNamespace.evm && evm.connected\n ? evm.wallet\n : null;\n\n const connectedChain =\n namespace === ChainNamespace.solana\n ? sol.connectedChain\n : evm.connectedChain;\n\n const setChain = (chain: any) => {\n // solana connect\n const chainId =\n typeof chain.chainId === \"number\"\n ? chain.chainId\n : hex2int(chain.chainId);\n // console.log('-- setchain chain',{\n // chain, chainId,\n // });\n\n let tempNamespace: ChainNamespace = ChainNamespace.evm;\n if (Array.from(SolanaChains.values()).includes(chainId)) {\n tempNamespace = ChainNamespace.solana;\n }\n console.log(\"--- namespace\", {\n namespace,\n tempNamespace,\n });\n if (namespace === tempNamespace && namespace === ChainNamespace.evm) {\n // todo switch chan on block native\n\n return evm.changeChain(chain);\n }\n if (namespace !== tempNamespace) {\n return connect({ chainId: chainId }).then();\n }\n };\n\n useEffect(() => {\n // console.log(\"-- connect\", {\n // sol: sol.connected,\n // evm: evm.connected,\n // });\n if (sol.connected && evm.connected) {\n if (newNamespace.current === ChainNamespace.solana) {\n evm.disconnect().then();\n setNamespace(ChainNamespace.solana);\n return;\n } else {\n setNamespace(ChainNamespace.evm);\n sol.disconnect().then();\n return;\n }\n }\n\n if (sol.connected) {\n setNamespace(ChainNamespace.solana);\n return;\n }\n if (evm.connected) {\n setNamespace(ChainNamespace.evm);\n return;\n }\n }, [newNamespace.current, sol.connected, evm.connected]);\n // console.log('--main wallet', {\n // wallet,\n // 'sol wallet': sol.wallet\n // });\n\n return (\n <WalletConnectorContext.Provider\n value={{\n connect,\n disconnect,\n connecting,\n wallet,\n setChain,\n connectedChain,\n namespace,\n }}\n >\n {props.children}\n </WalletConnectorContext.Provider>\n );\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n WalletAdapterNetwork,\n WalletNotReadyError,\n WalletReadyState,\n} from \"@solana/wallet-adapter-base\";\nimport { useConnection, useWallet } from \"@solana/wallet-adapter-react\";\nimport { useWalletModal } from \"@solana/wallet-adapter-react-ui\";\nimport {\n useEventEmitter,\n useLocalStorage,\n useStorageLedgerAddress,\n WalletState,\n} from \"@orderly.network/hooks\";\nimport { ChainNamespace, LedgerWalletKey } from \"@orderly.network/types\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { useSolanaContext } from \"./SolanaProvider\";\nimport { SolanaChainIdEnum, SolanaChains } from \"./config\";\n\nexport function useSOL() {\n const [wallet, setWallet] = useState<WalletState | null>(null);\n const { isMobile } = useScreen();\n const { endpoint, network } = useSolanaContext();\n const { setVisible: setModalVisible, visible } = useWalletModal();\n const { setLedgerAddress } = useStorageLedgerAddress();\n const {\n signMessage,\n signTransaction,\n sendTransaction,\n publicKey,\n wallet: solanaWallet,\n connect: solanaConnect,\n disconnect: solanaDisconnect,\n connecting,\n } = useWallet();\n\n // 1 for open, 2 for close, null for default\n const selectModalVisibleRef = useRef<boolean>(false);\n\n const [connected, setConnected] = useState(false);\n\n const isManual = useRef(false);\n const solanaPromiseRef = useRef<{\n walletSelect: Promise<any> | null;\n connect: Promise<any> | null;\n walletSelectResolve: (value: any) => void;\n walletSelectReject: (value: any) => void;\n connectResolve: (value: any) => void;\n connectReject: (value: any) => void;\n }>({\n walletSelect: null,\n connect: null,\n walletSelectResolve: () => {},\n walletSelectReject: () => {},\n connectReject: () => {},\n connectResolve: () => {},\n });\n const ee = useEventEmitter();\n\n const initPromiseRef = () => {\n console.log(\"-- init solana promise\");\n solanaPromiseRef.current.walletSelectResolve = () => {};\n solanaPromiseRef.current.walletSelectReject = () => {};\n solanaPromiseRef.current.connectReject = () => {};\n solanaPromiseRef.current.connectReject = () => {};\n solanaPromiseRef.current.connect = null;\n solanaPromiseRef.current.walletSelect = null;\n solanaPromiseRef.current.walletSelect = new Promise((resolve, reject) => {\n solanaPromiseRef.current.walletSelectResolve = resolve;\n solanaPromiseRef.current.walletSelectReject = reject;\n });\n solanaPromiseRef.current.connect = new Promise((resolve, reject) => {\n solanaPromiseRef.current.connectResolve = resolve;\n solanaPromiseRef.current.connectReject = reject;\n });\n };\n\n const handleSolanaError = (e: Error) => {\n console.log(\"solan connect error\", e);\n\n if (e instanceof WalletNotReadyError) {\n if (isMobile) {\n console.log(\"-- need toast wallet not ready\", e);\n ee.emit(\"wallet:connect-error\", {\n message: \"Please open the wallet app and use the in-app browser.\",\n });\n }\n }\n solanaDisconnect().then();\n };\n\n const connect = async () => {\n initPromiseRef();\n isManual.current = true;\n if (!solanaPromiseRef.current) {\n return;\n }\n if (!solanaWallet) {\n setModalVisible(true);\n selectModalVisibleRef.current = true;\n } else {\n solanaPromiseRef.current.walletSelectResolve(solanaWallet);\n if (!publicKey) {\n try {\n await solanaConnect();\n } catch (e) {\n solanaPromiseRef.current.connectReject(e);\n }\n } else {\n solanaPromiseRef.current.connectResolve({\n userAddress: publicKey.toBase58(),\n signMessage,\n signTransaction,\n sendTransaction,\n });\n }\n }\n\n console.log(\"-- connect fn\", solanaWallet, publicKey);\n return Promise.all([\n solanaPromiseRef.current.walletSelect,\n solanaPromiseRef.current.connect,\n ])\n .then(\n ([\n wallet,\n { userAddress, signMessage, signTransaction, sendTransaction },\n ]) => {\n // console.log('-- connect sol res',{\n // wallet,\n // userAddress, signMessage, sendTransaction\n // });\n const tempWallet = {\n label: wallet.adapter.name,\n icon: \"\",\n provider: {\n rpcUrl: endpoint,\n network: network,\n signMessage: signMessage,\n signTransaction,\n sendTransaction,\n },\n accounts: [\n {\n address: userAddress,\n },\n ],\n chains: [\n {\n id: SolanaChains.get(network)!,\n namespace: ChainNamespace.solana,\n },\n ],\n };\n if (wallet.adapter.name === \"Ledger\") {\n setLedgerAddress(userAddress);\n }\n setWallet(tempWallet);\n setConnected(true);\n return [tempWallet];\n },\n )\n .catch((e) => {\n console.log(\"connect solana error\", e);\n handleSolanaError(e);\n return Promise.reject(e);\n })\n .finally(() => {\n isManual.current = false;\n });\n };\n\n const disconnect = async () => {\n console.log(\"--- discconnect sol\");\n await solanaDisconnect();\n setWallet(null);\n setConnected(false);\n return [];\n };\n\n const connectedChain = useMemo(() => {\n if (!publicKey) {\n return null;\n }\n return {\n id:\n network === WalletAdapterNetwork.Mainnet\n ? SolanaChainIdEnum.MAINNET\n : SolanaChainIdEnum.DEVNET,\n namespace: ChainNamespace.solana,\n };\n }, [publicKey]);\n\n useEffect(() => {\n if (selectModalVisibleRef.current) {\n if (!visible && !solanaWallet && solanaPromiseRef.current) {\n console.log(\n \"-- select modal visible ref\",\n selectModalVisibleRef.current,\n );\n console.log(\"-- use reject solana select modal\");\n solanaPromiseRef.current.walletSelectReject(\"user reject\");\n selectModalVisibleRef.current = false;\n } else if (solanaWallet) {\n selectModalVisibleRef.current = false;\n }\n }\n }, [\n visible,\n solanaWallet,\n solanaPromiseRef.current,\n selectModalVisibleRef.current,\n ]);\n\n useEffect(() => {\n if (!solanaWallet || !publicKey) {\n console.log(\"--- not connect sol\", solanaWallet, publicKey);\n setConnected(false);\n return;\n }\n console.log(\"-- publick\", {\n publicKey: publicKey.toBase58(),\n isManual: isManual.current,\n });\n\n if (isManual.current) {\n if (solanaPromiseRef.current) {\n solanaPromiseRef.current.connectResolve({\n userAddress: publicKey?.toBase58(),\n signMessage,\n signTransaction,\n sendTransaction,\n });\n }\n return;\n }\n const userAddress = publicKey.toBase58();\n setWallet({\n label: solanaWallet.adapter.name,\n icon: \"\",\n provider: {\n signMessage: signMessage!,\n signTransaction: signTransaction!,\n sendTransaction: sendTransaction!,\n rpcUrl: endpoint,\n network: network,\n },\n accounts: [\n {\n address: userAddress,\n },\n ],\n chains: [\n {\n id: SolanaChains.get(network)!,\n namespace: ChainNamespace.solana,\n },\n ],\n });\n if (solanaWallet.adapter.name === \"Ledger\") {\n setLedgerAddress(userAddress);\n }\n\n setConnected(true);\n }, [\n publicKey,\n solanaWallet,\n signMessage,\n signTransaction,\n isManual,\n sendTransaction,\n endpoint,\n network,\n ]);\n\n useEffect(() => {\n if (!solanaWallet) {\n return;\n }\n console.log(\"-- public key\", publicKey, { isMobile });\n if (\n isMobile &&\n solanaWallet.readyState === WalletReadyState.Loadable &&\n !isManual.current\n ) {\n solanaDisconnect().then();\n return;\n }\n\n console.log(\"-- solana refresh auto connect\", solanaWallet);\n\n if (solanaPromiseRef.current) {\n solanaPromiseRef.current.walletSelectResolve(solanaWallet);\n }\n }, [\n solanaWallet,\n solanaConnect,\n publicKey,\n solanaDisconnect,\n handleSolanaError,\n isMobile,\n ]);\n\n return {\n connected,\n connect,\n disconnect,\n connecting,\n wallet,\n connectedChain,\n };\n}\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport {\n createDefaultAddressSelector,\n createDefaultAuthorizationResultCache,\n SolanaMobileWalletAdapter,\n} from \"@solana-mobile/wallet-adapter-mobile\";\nimport {\n Adapter,\n WalletAdapterNetwork,\n WalletError,\n WalletNotReadyError,\n} from \"@solana/wallet-adapter-base\";\nimport {\n ConnectionProvider,\n WalletProvider,\n} from \"@solana/wallet-adapter-react\";\nimport { WalletModalProvider } from \"@solana/wallet-adapter-react-ui\";\nimport { PhantomWalletAdapter } from \"@solana/wallet-adapter-wallets\";\nimport { clusterApiUrl } from \"@solana/web3.js\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { getGlobalObject } from \"@orderly.network/utils\";\nimport { SolanaInitialProps } from \"./types\";\nimport \"@solana/wallet-adapter-react-ui/styles.css\";\n\nconst SolanaContext = createContext<{\n network: WalletAdapterNetwork;\n endpoint: string;\n}>({\n network: WalletAdapterNetwork.Devnet,\n endpoint: \"\",\n});\n\nexport const useSolanaContext = () => {\n const context = useContext(SolanaContext);\n\n if (context === undefined) {\n throw new Error(\"useSolanaContext must be used within a SolanaProvider\");\n }\n\n return context;\n};\n\nexport function SolanaProvider({ children, ...props }: SolanaInitialProps) {\n const { isMobile } = useScreen();\n const network = useMemo(\n () => props.network ?? WalletAdapterNetwork.Devnet,\n [props.network],\n );\n\n const endpoint = useMemo(() => {\n if (network === WalletAdapterNetwork.Mainnet) {\n return props.mainnetRpc ?? \"\";\n }\n if (network === WalletAdapterNetwork.Devnet) {\n return props.devnetRpc ?? \"\";\n }\n return \"\";\n }, [network, props.mainnetRpc, props.devnetRpc]);\n\n const mobileWalletNotFoundHanlder = (adapter: SolanaMobileWalletAdapter) => {\n console.log(\"-- mobile wallet adapter\", adapter);\n return Promise.reject(new WalletNotReadyError(\"wallet not ready\"));\n };\n\n const handleSolanaError = (error: WalletError, adapter?: Adapter) => {\n console.log(\"-- solanan error\", error);\n console.log(\"-- solana adapter\", adapter);\n\n if (!isMobile && error instanceof WalletNotReadyError) {\n window.open(adapter?.url, \"_blank\");\n }\n };\n\n const wallets = useMemo(() => {\n let uri = \"\";\n if (typeof window !== \"undefined\") {\n const location = (getGlobalObject() as any).location;\n uri = `${location.protocol}//${location.host}`;\n }\n\n return (\n props.wallets ?? [\n new PhantomWalletAdapter(),\n new SolanaMobileWalletAdapter({\n addressSelector: createDefaultAddressSelector(),\n appIdentity: {\n uri,\n },\n authorizationResultCache: createDefaultAuthorizationResultCache(),\n chain: network,\n onWalletNotFound: mobileWalletNotFoundHanlder,\n }),\n ]\n );\n }, [props.wallets, network]);\n\n const contextValue = useMemo(\n () => ({\n network,\n endpoint,\n }),\n [network, endpoint],\n );\n\n return (\n <SolanaContext.Provider value={contextValue}>\n <WalletProvider\n wallets={wallets}\n onError={props.onError ?? handleSolanaError}\n autoConnect={true}\n >\n <WalletModalProvider className=\"oui-pointer-events-auto\">\n {children}\n </WalletModalProvider>\n </WalletProvider>\n </SolanaContext.Provider>\n );\n}\n","import injectedModule from \"@web3-onboard/injected-wallets\";\nimport { init } from \"@web3-onboard/react\";\nimport type { InitOptions, OnboardAPI } from \"@web3-onboard/core\";\nimport binanceModule from \"@binance/w3w-blocknative-connector\";\n// import bitgetWalletModule from \"@web3-onboard/bitget\";\nimport { merge } from \"lodash\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\n\n// initialize the module with options\nconst binance = binanceModule({ options: { lng: \"en\" } });\n// const bitgetWallet = bitgetWalletModule();\n\nexport const initConfig: (\n apiKey?: string,\n options?: InitOptions\n) => OnboardAPI = (apiKey, options) => {\n const defaultOptions = {\n apiKey,\n connect: {\n // autoConnectAllPreviousWallet: true,\n autoConnectLastWallet: true,\n },\n wallets: [injectedModule(), binance],\n chains: [],\n appMetadata: {\n name: \"Orderly\",\n // icon: blocknativeIcon,\n description: \"Orderly\",\n recommendedInjectedWallets: [\n { name: \"Coinbase\", url: \"https://wallet.coinbase.com/\" },\n { name: \"MetaMask\", url: \"https://metamask.io\" },\n { name: \"Trezor\", url: \"https://trezor.io/\" },\n { name: \"Walletconnect\", url: \"https://walletconnect.com/\" },\n { name: \"Ledger\", url: \"https://www.ledger.com/\" },\n ],\n agreement: {\n version: \"1.0.0\",\n termsUrl: \"https://www.blocknative.com/terms-conditions\",\n privacyUrl: \"https://www.blocknative.com/privacy-policy\",\n },\n gettingStartedGuide: \"https://blocknative.com\",\n explore: \"https://blocknative.com\",\n },\n accountCenter: {\n desktop: {\n enabled: false,\n },\n mobile: {\n enabled: false,\n },\n },\n theme: \"dark\",\n } as InitOptions;\n\n const mergedOptions = merge(defaultOptions, options);\n\n return init(mergedOptions);\n};\n\nexport enum SolanaChainIdEnum {\n MAINNET = 900900900,\n DEVNET = 901901901,\n}\n\nexport const SolanaChains = new Map([[WalletAdapterNetwork.Devnet, 901901901], [WalletAdapterNetwork.Mainnet, 900900900]]);\n\n","import { useConnectWallet, useSetChain } from \"@web3-onboard/react\";\nimport { useMemo } from \"react\";\n\nexport function useEvm() {\n const [\n {\n wallet, // the wallet that has been connected or null if not yet connected\n connecting, // boolean indicating if connection is in progress\n },\n connect, // function to call to initiate user to connect wallet\n evmDisconnect, // function to call with wallet<DisconnectOptions> to disconnect wallet\n updateBalances, // function to be called with an optional array of wallet addresses connected through Onboard to update balance or empty/no params to update all connected wallets\n setWalletModules, // function to be called with an array of wallet modules to conditionally allow connection of wallet types i.e. setWalletModules([ledger, trezor, injected])\n setPrimaryWallet, // function that can set the primary wallet and/or primary account within that wallet. The wallet that is set needs to be passed in for the first parameter and if you would like to set the primary account, the address of that account also needs to be passed in\n ] = useConnectWallet();\n\n const [\n {\n chains, // the list of chains that web3-onboard was initialized with\n connectedChain: evmConnectChain, // the current chain the user's wallet is connected to\n settingChain, // boolean indicating if the chain is in the process of being set\n },\n setChain, // function to call to initiate user to switch chains in their wallet\n ] = useSetChain();\n\n const connected = useMemo(() => {\n return !!(wallet && wallet.accounts && wallet.accounts[0] && wallet.accounts[0].address);\n }, [wallet]);\n\n const disconnect = async () => {\n console.log('-- disconnect evm xxxxxxxxxxxx');\n if (!wallet) {\n return;\n }\n return evmDisconnect({\n label: wallet.label,\n });\n };\n\n const connectedChain = useMemo(() => {\n return evmConnectChain\n ? { ...evmConnectChain, id: parseInt(evmConnectChain.id) }\n : null;\n }, [evmConnectChain]);\n\n const changeChain = (chain: { chainId: string}): Promise<any> =>{\n return setChain(chain);\n }\n\n return {\n connect,\n connected,\n disconnect,\n connecting,\n wallet,\n connectedChain,\n changeChain,\n\n };\n}\n","import { Main } from \"./main\";\nimport React, { type PropsWithChildren } from \"react\";\nimport { EvmInitialProps, SolanaInitialProps } from \"./types\";\nimport { InitEvm } from \"./initEvm\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\nimport { SolanaProvider } from \"./SolanaProvider\";\n\nexport interface WalletConnectorProviderProps {\n solanaInitial?: SolanaInitialProps;\n evmInitial?: EvmInitialProps;\n}\n\nexport function WalletConnectorProvider(\n props: PropsWithChildren<WalletConnectorProviderProps>\n) {\n return (\n <SolanaProvider {...(props.solanaInitial ?? {})}>\n\n <InitEvm {...(props.evmInitial ?? {})}>\n <Main solanaNetwork={props.solanaInitial?.network ?? WalletAdapterNetwork.Devnet}>{props.children}</Main>\n </InitEvm>\n </SolanaProvider>\n );\n}\n","import React, { PropsWithChildren, useEffect, useState } from \"react\";\nimport { useSimpleDI } from \"@orderly.network/hooks\";\nimport type { InitOptions, OnboardAPI } from \"@web3-onboard/core\";\nimport { Optional } from \"@orderly.network/types\";\nimport { initConfig } from \"./config\";\nimport { merge } from \"lodash\";\n\n\nexport type ConnectorInitOptions = Optional<\n InitOptions,\n | \"apiKey\"\n | \"connect\"\n | \"wallets\"\n | \"chains\"\n | \"appMetadata\"\n | \"accountCenter\"\n | \"theme\"\n>;\n\nexport interface WalletConnectorProviderProps {\n apiKey?: string;\n options?: ConnectorInitOptions;\n // skip board configuration if already initialized\n skipInit?: boolean;\n}\n\nexport function InitEvm(\n props: PropsWithChildren<WalletConnectorProviderProps>\n) {\n const [initialized, setInitialized] = useState(!!props.skipInit);\n\n const { get, register } = useSimpleDI();\n\n useEffect(() => {\n document.body.style.setProperty(\"--onboard-modal-z-index\", \"88\");\n }, []);\n\n useEffect(() => {\n if (props.skipInit) {\n return;\n }\n\n let onboardAPI = get(\"onboardAPI\") as OnboardAPI;\n\n if (onboardAPI) {\n console.log(\"[Orderly SDK]:onboardAPI already initialized\");\n setInitialized(true);\n return;\n }\n\n Promise.all([\n fetchChainInfo('https://testnet-api.orderly.org/v1/public/chain_info'),\n fetchChainInfo('https://api.orderly.org/v1/public/chain_info'),\n ])\n .then(([testChainInfo, mainnetChainInfo]) => {\n const testChains = processChainInfo(testChainInfo);\n const mainnetChains = processChainInfo(mainnetChainInfo);\n\n let options = props.options || {};\n options = merge({ chains: [...testChains, ...mainnetChains] }, options);\n\n onboardAPI = initConfig(props.apiKey, options as InitOptions);\n register('onboardAPI', onboardAPI);\n setInitialized(true);\n })\n .catch((error) => {\n console.error('Error fetching data:', error);\n });\n }, []);\n\n if (!initialized) return null;\n\n return props.children\n}\n\nconst fetchChainInfo = async (url: string) => {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`Failed to fetch data from ${url}`);\n }\n return response.json();\n};\n\nconst processChainInfo = (chainInfo: any) =>\n chainInfo?.data?.rows?.map((row: any) => ({\n id: Number(row.chain_id),\n token: row.currency_symbol,\n label: row.name,\n rpcUrl: row.public_rpc_url,\n blockExplorerUrl: row.explorer_base_url,\n })) || [];\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/provider.tsx","../src/SolanaProvider.tsx","../src/initEvm.tsx","../src/config.ts","../src/main.tsx","../src/useEvm.tsx","../src/useSOL.tsx"],"names":["React","WalletAdapterNetwork","merge","useEffect","useMemo","useRef","useState","ChainNamespace","WalletNotReadyError","useScreen","wallet","signMessage","signTransaction","sendTransaction"],"mappings":"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","sourcesContent":["import React, { type PropsWithChildren } from \"react\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\nimport { EMPTY_OBJECT } from \"@orderly.network/types\";\nimport { SolanaProvider } from \"./SolanaProvider\";\nimport { InitEvm } from \"./initEvm\";\nimport { Main } from \"./main\";\nimport { EvmInitialProps, SolanaInitialProps } from \"./types\";\n\nexport interface WalletConnectorProviderProps {\n solanaInitial?: SolanaInitialProps;\n evmInitial?: EvmInitialProps;\n}\n\nexport const WalletConnectorProvider: React.FC<\n PropsWithChildren<WalletConnectorProviderProps>\n> = (props) => {\n return (\n <SolanaProvider {...(props.solanaInitial ?? EMPTY_OBJECT)}>\n <InitEvm {...(props.evmInitial ?? EMPTY_OBJECT)}>\n <Main\n solanaNetwork={\n props.solanaInitial?.network ?? WalletAdapterNetwork.Devnet\n }\n >\n {props.children}\n </Main>\n </InitEvm>\n </SolanaProvider>\n );\n};\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport {\n createDefaultAddressSelector,\n createDefaultAuthorizationResultCache,\n SolanaMobileWalletAdapter,\n} from \"@solana-mobile/wallet-adapter-mobile\";\nimport {\n Adapter,\n WalletAdapterNetwork,\n WalletError,\n WalletNotReadyError,\n} from \"@solana/wallet-adapter-base\";\nimport {\n ConnectionProvider,\n WalletProvider,\n} from \"@solana/wallet-adapter-react\";\nimport { WalletModalProvider } from \"@solana/wallet-adapter-react-ui\";\nimport { PhantomWalletAdapter } from \"@solana/wallet-adapter-wallets\";\nimport { clusterApiUrl } from \"@solana/web3.js\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { getGlobalObject } from \"@orderly.network/utils\";\nimport { SolanaInitialProps } from \"./types\";\nimport \"@solana/wallet-adapter-react-ui/styles.css\";\n\nconst SolanaContext = createContext<{\n network: WalletAdapterNetwork;\n endpoint: string;\n}>({\n network: WalletAdapterNetwork.Devnet,\n endpoint: \"\",\n});\n\nexport const useSolanaContext = () => {\n const context = useContext(SolanaContext);\n\n if (context === undefined) {\n throw new Error(\"useSolanaContext must be used within a SolanaProvider\");\n }\n\n return context;\n};\n\nexport function SolanaProvider({ children, ...props }: SolanaInitialProps) {\n const { isMobile } = useScreen();\n const network = useMemo(\n () => props.network ?? WalletAdapterNetwork.Devnet,\n [props.network],\n );\n\n const endpoint = useMemo(() => {\n if (network === WalletAdapterNetwork.Mainnet) {\n return props.mainnetRpc ?? \"\";\n }\n if (network === WalletAdapterNetwork.Devnet) {\n return props.devnetRpc ?? \"\";\n }\n return \"\";\n }, [network, props.mainnetRpc, props.devnetRpc]);\n\n const mobileWalletNotFoundHanlder = (adapter: SolanaMobileWalletAdapter) => {\n console.log(\"-- mobile wallet adapter\", adapter);\n return Promise.reject(new WalletNotReadyError(\"wallet not ready\"));\n };\n\n const handleSolanaError = (error: WalletError, adapter?: Adapter) => {\n console.log(\"-- solanan error\", error);\n console.log(\"-- solana adapter\", adapter);\n\n if (!isMobile && error instanceof WalletNotReadyError) {\n window.open(adapter?.url, \"_blank\");\n }\n };\n\n const wallets = useMemo(() => {\n let uri = \"\";\n if (typeof window !== \"undefined\") {\n const location = (getGlobalObject() as any).location;\n uri = `${location.protocol}//${location.host}`;\n }\n\n return (\n props.wallets ?? [\n new PhantomWalletAdapter(),\n new SolanaMobileWalletAdapter({\n addressSelector: createDefaultAddressSelector(),\n appIdentity: {\n uri,\n },\n authorizationResultCache: createDefaultAuthorizationResultCache(),\n chain: network,\n onWalletNotFound: mobileWalletNotFoundHanlder,\n }),\n ]\n );\n }, [props.wallets, network]);\n\n const contextValue = useMemo(\n () => ({\n network,\n endpoint,\n }),\n [network, endpoint],\n );\n\n return (\n <SolanaContext.Provider value={contextValue}>\n <WalletProvider\n wallets={wallets}\n onError={props.onError ?? handleSolanaError}\n autoConnect={true}\n >\n <WalletModalProvider className=\"oui-pointer-events-auto\">\n {children}\n </WalletModalProvider>\n </WalletProvider>\n </SolanaContext.Provider>\n );\n}\n","import React, { PropsWithChildren, useEffect, useState } from \"react\";\nimport { useSimpleDI } from \"@orderly.network/hooks\";\nimport type { InitOptions, OnboardAPI } from \"@web3-onboard/core\";\nimport { Optional } from \"@orderly.network/types\";\nimport { initConfig } from \"./config\";\nimport { merge } from \"lodash\";\n\n\nexport type ConnectorInitOptions = Optional<\n InitOptions,\n | \"apiKey\"\n | \"connect\"\n | \"wallets\"\n | \"chains\"\n | \"appMetadata\"\n | \"accountCenter\"\n | \"theme\"\n>;\n\nexport interface WalletConnectorProviderProps {\n apiKey?: string;\n options?: ConnectorInitOptions;\n // skip board configuration if already initialized\n skipInit?: boolean;\n}\n\nexport function InitEvm(\n props: PropsWithChildren<WalletConnectorProviderProps>\n) {\n const [initialized, setInitialized] = useState(!!props.skipInit);\n\n const { get, register } = useSimpleDI();\n\n useEffect(() => {\n document.body.style.setProperty(\"--onboard-modal-z-index\", \"88\");\n }, []);\n\n useEffect(() => {\n if (props.skipInit) {\n return;\n }\n\n let onboardAPI = get(\"onboardAPI\") as OnboardAPI;\n\n if (onboardAPI) {\n console.log(\"[Orderly SDK]:onboardAPI already initialized\");\n setInitialized(true);\n return;\n }\n\n Promise.all([\n fetchChainInfo('https://testnet-api.orderly.org/v1/public/chain_info'),\n fetchChainInfo('https://api.orderly.org/v1/public/chain_info'),\n ])\n .then(([testChainInfo, mainnetChainInfo]) => {\n const testChains = processChainInfo(testChainInfo);\n const mainnetChains = processChainInfo(mainnetChainInfo);\n\n let options = props.options || {};\n options = merge({ chains: [...testChains, ...mainnetChains] }, options);\n\n onboardAPI = initConfig(props.apiKey, options as InitOptions);\n register('onboardAPI', onboardAPI);\n setInitialized(true);\n })\n .catch((error) => {\n console.error('Error fetching data:', error);\n });\n }, []);\n\n if (!initialized) return null;\n\n return props.children\n}\n\nconst fetchChainInfo = async (url: string) => {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`Failed to fetch data from ${url}`);\n }\n return response.json();\n};\n\nconst processChainInfo = (chainInfo: any) =>\n chainInfo?.data?.rows?.map((row: any) => ({\n id: Number(row.chain_id),\n token: row.currency_symbol,\n label: row.name,\n rpcUrl: row.public_rpc_url,\n blockExplorerUrl: row.explorer_base_url,\n })) || [];\n","import injectedModule from \"@web3-onboard/injected-wallets\";\nimport { init } from \"@web3-onboard/react\";\nimport type { InitOptions, OnboardAPI } from \"@web3-onboard/core\";\nimport binanceModule from \"@binance/w3w-blocknative-connector\";\n// import bitgetWalletModule from \"@web3-onboard/bitget\";\nimport { merge } from \"lodash\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\n\n// initialize the module with options\nconst binance = binanceModule({ options: { lng: \"en\" } });\n// const bitgetWallet = bitgetWalletModule();\n\nexport const initConfig: (\n apiKey?: string,\n options?: InitOptions\n) => OnboardAPI = (apiKey, options) => {\n const defaultOptions = {\n apiKey,\n connect: {\n // autoConnectAllPreviousWallet: true,\n autoConnectLastWallet: true,\n },\n wallets: [injectedModule(), binance],\n chains: [],\n appMetadata: {\n name: \"Orderly\",\n // icon: blocknativeIcon,\n description: \"Orderly\",\n recommendedInjectedWallets: [\n { name: \"Coinbase\", url: \"https://wallet.coinbase.com/\" },\n { name: \"MetaMask\", url: \"https://metamask.io\" },\n { name: \"Trezor\", url: \"https://trezor.io/\" },\n { name: \"Walletconnect\", url: \"https://walletconnect.com/\" },\n { name: \"Ledger\", url: \"https://www.ledger.com/\" },\n ],\n agreement: {\n version: \"1.0.0\",\n termsUrl: \"https://www.blocknative.com/terms-conditions\",\n privacyUrl: \"https://www.blocknative.com/privacy-policy\",\n },\n gettingStartedGuide: \"https://blocknative.com\",\n explore: \"https://blocknative.com\",\n },\n accountCenter: {\n desktop: {\n enabled: false,\n },\n mobile: {\n enabled: false,\n },\n },\n theme: \"dark\",\n } as InitOptions;\n\n const mergedOptions = merge(defaultOptions, options);\n\n return init(mergedOptions);\n};\n\nexport enum SolanaChainIdEnum {\n MAINNET = 900900900,\n DEVNET = 901901901,\n}\n\nexport const SolanaChains = new Map([[WalletAdapterNetwork.Devnet, 901901901], [WalletAdapterNetwork.Mainnet, 900900900]]);\n\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\nimport { WalletConnectorContext } from \"@orderly.network/hooks\";\nimport type { WalletConnectorContextState } from \"@orderly.network/hooks\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport { hex2int } from \"@orderly.network/utils\";\nimport { SolanaChains } from \"./config\";\nimport { useEvm } from \"./useEvm\";\nimport { useSOL } from \"./useSOL\";\n\nexport const Main: React.FC<\n React.PropsWithChildren<{ solanaNetwork: WalletAdapterNetwork }>\n> = (props) => {\n const sol = useSOL();\n const evm = useEvm();\n\n const [namespace, setNamespace] = useState<ChainNamespace | null>(null);\n\n const newNamespace = useRef<ChainNamespace | null>();\n\n const connect = async (options: any) => {\n if (Array.from(SolanaChains.values()).includes(options.chainId)) {\n newNamespace.current = ChainNamespace.solana;\n // connect solana\n return sol.connect().then((res) => {\n if (res) {\n return res;\n }\n });\n }\n newNamespace.current = ChainNamespace.evm;\n const evmOption = options.autoSelect\n ? {\n autoSelect: options.autoSelect,\n }\n : undefined;\n\n return evm\n .connect(evmOption)\n .then((res) => {\n if (!res.length) {\n return Promise.reject({ message: \"user reject\" });\n }\n return res;\n })\n .catch((e) => {\n return Promise.reject(e);\n });\n };\n\n const disconnect = async () => {\n if (namespace === ChainNamespace.evm) {\n return evm.disconnect();\n }\n if (namespace === ChainNamespace.solana) {\n return sol.disconnect();\n }\n };\n\n const connecting =\n newNamespace.current == ChainNamespace.solana\n ? sol.connecting\n : evm.connecting;\n\n // console.log('-- connecting', connecting);\n\n const wallet =\n namespace === ChainNamespace.solana && sol.connected\n ? sol.wallet\n : namespace === ChainNamespace.evm && evm.connected\n ? evm.wallet\n : null;\n\n const connectedChain =\n namespace === ChainNamespace.solana\n ? sol.connectedChain\n : evm.connectedChain;\n\n const setChain = (chain: any) => {\n // solana connect\n const chainId =\n typeof chain.chainId === \"number\"\n ? chain.chainId\n : hex2int(chain.chainId);\n // console.log('-- setchain chain',{\n // chain, chainId,\n // });\n\n let tempNamespace: ChainNamespace = ChainNamespace.evm;\n if (Array.from(SolanaChains.values()).includes(chainId)) {\n tempNamespace = ChainNamespace.solana;\n }\n\n if (namespace === tempNamespace && namespace === ChainNamespace.evm) {\n // todo switch chan on block native\n\n return evm.changeChain(chain);\n }\n if (namespace !== tempNamespace) {\n return connect({ chainId: chainId }).then();\n }\n };\n\n useEffect(() => {\n if (sol.connected && evm.connected) {\n if (newNamespace.current === ChainNamespace.solana) {\n evm.disconnect().then();\n setNamespace(ChainNamespace.solana);\n return;\n } else {\n setNamespace(ChainNamespace.evm);\n sol.disconnect().then();\n return;\n }\n }\n\n if (sol.connected) {\n setNamespace(ChainNamespace.solana);\n return;\n }\n if (evm.connected) {\n setNamespace(ChainNamespace.evm);\n return;\n }\n }, [newNamespace.current, sol.connected, evm.connected]);\n\n const memoizedValue = useMemo<WalletConnectorContextState>(() => {\n return {\n connect: connect as any,\n disconnect: disconnect as any,\n connecting,\n wallet: wallet as any,\n setChain: setChain as any,\n connectedChain: connectedChain as any,\n namespace: namespace,\n chains: [],\n settingChain: false,\n };\n }, [\n connect,\n disconnect,\n connecting,\n wallet,\n setChain,\n connectedChain,\n namespace,\n ]);\n\n return (\n <WalletConnectorContext.Provider value={memoizedValue}>\n {props.children}\n </WalletConnectorContext.Provider>\n );\n};\n","import { useConnectWallet, useSetChain } from \"@web3-onboard/react\";\nimport { useMemo } from \"react\";\n\nexport function useEvm() {\n const [\n {\n wallet, // the wallet that has been connected or null if not yet connected\n connecting, // boolean indicating if connection is in progress\n },\n connect, // function to call to initiate user to connect wallet\n evmDisconnect, // function to call with wallet<DisconnectOptions> to disconnect wallet\n updateBalances, // function to be called with an optional array of wallet addresses connected through Onboard to update balance or empty/no params to update all connected wallets\n setWalletModules, // function to be called with an array of wallet modules to conditionally allow connection of wallet types i.e. setWalletModules([ledger, trezor, injected])\n setPrimaryWallet, // function that can set the primary wallet and/or primary account within that wallet. The wallet that is set needs to be passed in for the first parameter and if you would like to set the primary account, the address of that account also needs to be passed in\n ] = useConnectWallet();\n\n const [\n {\n chains, // the list of chains that web3-onboard was initialized with\n connectedChain: evmConnectChain, // the current chain the user's wallet is connected to\n settingChain, // boolean indicating if the chain is in the process of being set\n },\n setChain, // function to call to initiate user to switch chains in their wallet\n ] = useSetChain();\n\n const connected = useMemo(() => {\n return !!(wallet && wallet.accounts && wallet.accounts[0] && wallet.accounts[0].address);\n }, [wallet]);\n\n const disconnect = async () => {\n console.log('-- disconnect evm xxxxxxxxxxxx');\n if (!wallet) {\n return;\n }\n return evmDisconnect({\n label: wallet.label,\n });\n };\n\n const connectedChain = useMemo(() => {\n return evmConnectChain\n ? { ...evmConnectChain, id: parseInt(evmConnectChain.id) }\n : null;\n }, [evmConnectChain]);\n\n const changeChain = (chain: { chainId: string}): Promise<any> =>{\n return setChain(chain);\n }\n\n return {\n connect,\n connected,\n disconnect,\n connecting,\n wallet,\n connectedChain,\n changeChain,\n\n };\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n WalletAdapterNetwork,\n WalletNotReadyError,\n WalletReadyState,\n} from \"@solana/wallet-adapter-base\";\nimport { useConnection, useWallet } from \"@solana/wallet-adapter-react\";\nimport { useWalletModal } from \"@solana/wallet-adapter-react-ui\";\nimport {\n useEventEmitter,\n useLocalStorage,\n useStorageLedgerAddress,\n WalletState,\n} from \"@orderly.network/hooks\";\nimport { ChainNamespace, LedgerWalletKey } from \"@orderly.network/types\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { useSolanaContext } from \"./SolanaProvider\";\nimport { SolanaChainIdEnum, SolanaChains } from \"./config\";\n\nexport function useSOL() {\n const [wallet, setWallet] = useState<WalletState | null>(null);\n const { isMobile } = useScreen();\n const { endpoint, network } = useSolanaContext();\n const { setVisible: setModalVisible, visible } = useWalletModal();\n const { setLedgerAddress } = useStorageLedgerAddress();\n const {\n signMessage,\n signTransaction,\n sendTransaction,\n publicKey,\n wallet: solanaWallet,\n connect: solanaConnect,\n disconnect: solanaDisconnect,\n connecting,\n } = useWallet();\n\n // 1 for open, 2 for close, null for default\n const selectModalVisibleRef = useRef<boolean>(false);\n\n const [connected, setConnected] = useState(false);\n\n const isManual = useRef(false);\n const solanaPromiseRef = useRef<{\n walletSelect: Promise<any> | null;\n connect: Promise<any> | null;\n walletSelectResolve: (value: any) => void;\n walletSelectReject: (value: any) => void;\n connectResolve: (value: any) => void;\n connectReject: (value: any) => void;\n }>({\n walletSelect: null,\n connect: null,\n walletSelectResolve: () => {},\n walletSelectReject: () => {},\n connectReject: () => {},\n connectResolve: () => {},\n });\n const ee = useEventEmitter();\n\n const initPromiseRef = () => {\n console.log(\"-- init solana promise\");\n solanaPromiseRef.current.walletSelectResolve = () => {};\n solanaPromiseRef.current.walletSelectReject = () => {};\n solanaPromiseRef.current.connectReject = () => {};\n solanaPromiseRef.current.connectReject = () => {};\n solanaPromiseRef.current.connect = null;\n solanaPromiseRef.current.walletSelect = null;\n solanaPromiseRef.current.walletSelect = new Promise((resolve, reject) => {\n solanaPromiseRef.current.walletSelectResolve = resolve;\n solanaPromiseRef.current.walletSelectReject = reject;\n });\n solanaPromiseRef.current.connect = new Promise((resolve, reject) => {\n solanaPromiseRef.current.connectResolve = resolve;\n solanaPromiseRef.current.connectReject = reject;\n });\n };\n\n const handleSolanaError = (e: Error) => {\n console.log(\"solan connect error\", e);\n\n if (e instanceof WalletNotReadyError) {\n if (isMobile) {\n console.log(\"-- need toast wallet not ready\", e);\n ee.emit(\"wallet:connect-error\", {\n message: \"Please open the wallet app and use the in-app browser.\",\n });\n }\n }\n solanaDisconnect().then();\n };\n\n const connect = async () => {\n initPromiseRef();\n isManual.current = true;\n if (!solanaPromiseRef.current) {\n return;\n }\n if (!solanaWallet) {\n setModalVisible(true);\n selectModalVisibleRef.current = true;\n } else {\n solanaPromiseRef.current.walletSelectResolve(solanaWallet);\n if (!publicKey) {\n try {\n await solanaConnect();\n } catch (e) {\n solanaPromiseRef.current.connectReject(e);\n }\n } else {\n solanaPromiseRef.current.connectResolve({\n userAddress: publicKey.toBase58(),\n signMessage,\n signTransaction,\n sendTransaction,\n });\n }\n }\n\n console.log(\"-- connect fn\", solanaWallet, publicKey);\n return Promise.all([\n solanaPromiseRef.current.walletSelect,\n solanaPromiseRef.current.connect,\n ])\n .then(\n ([\n wallet,\n { userAddress, signMessage, signTransaction, sendTransaction },\n ]) => {\n // console.log('-- connect sol res',{\n // wallet,\n // userAddress, signMessage, sendTransaction\n // });\n const tempWallet = {\n label: wallet.adapter.name,\n icon: \"\",\n provider: {\n rpcUrl: endpoint,\n network: network,\n signMessage: signMessage,\n signTransaction,\n sendTransaction,\n },\n accounts: [\n {\n address: userAddress,\n },\n ],\n chains: [\n {\n id: SolanaChains.get(network)!,\n namespace: ChainNamespace.solana,\n },\n ],\n };\n if (wallet.adapter.name === \"Ledger\") {\n setLedgerAddress(userAddress);\n }\n setWallet(tempWallet);\n setConnected(true);\n return [tempWallet];\n },\n )\n .catch((e) => {\n console.log(\"connect solana error\", e);\n handleSolanaError(e);\n return Promise.reject(e);\n })\n .finally(() => {\n isManual.current = false;\n });\n };\n\n const disconnect = async () => {\n console.log(\"--- discconnect sol\");\n await solanaDisconnect();\n setWallet(null);\n setConnected(false);\n return [];\n };\n\n const connectedChain = useMemo(() => {\n if (!publicKey) {\n return null;\n }\n return {\n id:\n network === WalletAdapterNetwork.Mainnet\n ? SolanaChainIdEnum.MAINNET\n : SolanaChainIdEnum.DEVNET,\n namespace: ChainNamespace.solana,\n };\n }, [publicKey]);\n\n useEffect(() => {\n if (selectModalVisibleRef.current) {\n if (!visible && !solanaWallet && solanaPromiseRef.current) {\n console.log(\n \"-- select modal visible ref\",\n selectModalVisibleRef.current,\n );\n console.log(\"-- use reject solana select modal\");\n solanaPromiseRef.current.walletSelectReject(\"user reject\");\n selectModalVisibleRef.current = false;\n } else if (solanaWallet) {\n selectModalVisibleRef.current = false;\n }\n }\n }, [\n visible,\n solanaWallet,\n solanaPromiseRef.current,\n selectModalVisibleRef.current,\n ]);\n\n useEffect(() => {\n if (!solanaWallet || !publicKey) {\n console.log(\"--- not connect sol\", solanaWallet, publicKey);\n setConnected(false);\n return;\n }\n console.log(\"-- publick\", {\n publicKey: publicKey.toBase58(),\n isManual: isManual.current,\n });\n\n if (isManual.current) {\n if (solanaPromiseRef.current) {\n solanaPromiseRef.current.connectResolve({\n userAddress: publicKey?.toBase58(),\n signMessage,\n signTransaction,\n sendTransaction,\n });\n }\n return;\n }\n const userAddress = publicKey.toBase58();\n setWallet({\n label: solanaWallet.adapter.name,\n icon: \"\",\n provider: {\n signMessage: signMessage!,\n signTransaction: signTransaction!,\n sendTransaction: sendTransaction!,\n rpcUrl: endpoint,\n network: network,\n },\n accounts: [\n {\n address: userAddress,\n },\n ],\n chains: [\n {\n id: SolanaChains.get(network)!,\n namespace: ChainNamespace.solana,\n },\n ],\n });\n if (solanaWallet.adapter.name === \"Ledger\") {\n setLedgerAddress(userAddress);\n }\n\n setConnected(true);\n }, [\n publicKey,\n solanaWallet,\n signMessage,\n signTransaction,\n isManual,\n sendTransaction,\n endpoint,\n network,\n ]);\n\n useEffect(() => {\n if (!solanaWallet) {\n return;\n }\n console.log(\"-- public key\", publicKey, { isMobile });\n if (\n isMobile &&\n solanaWallet.readyState === WalletReadyState.Loadable &&\n !isManual.current\n ) {\n solanaDisconnect().then();\n return;\n }\n\n console.log(\"-- solana refresh auto connect\", solanaWallet);\n\n if (solanaPromiseRef.current) {\n solanaPromiseRef.current.walletSelectResolve(solanaWallet);\n }\n }, [\n solanaWallet,\n solanaConnect,\n publicKey,\n solanaDisconnect,\n handleSolanaError,\n isMobile,\n ]);\n\n return {\n connected,\n connect,\n disconnect,\n connecting,\n wallet,\n connectedChain,\n };\n}\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import React, { createContext, useMemo, useState, useEffect, useRef, useContext } from 'react';
|
|
2
|
-
import { useSimpleDI, WalletConnectorContext, useStorageLedgerAddress, useEventEmitter } from '@orderly.network/hooks';
|
|
3
|
-
import { getGlobalObject, hex2int } from '@orderly.network/utils';
|
|
4
|
-
import { ChainNamespace } from '@orderly.network/types';
|
|
5
2
|
import { WalletAdapterNetwork, WalletNotReadyError, WalletReadyState } from '@solana/wallet-adapter-base';
|
|
3
|
+
import { EMPTY_OBJECT, ChainNamespace } from '@orderly.network/types';
|
|
4
|
+
import { SolanaMobileWalletAdapter, createDefaultAuthorizationResultCache, createDefaultAddressSelector } from '@solana-mobile/wallet-adapter-mobile';
|
|
6
5
|
import { WalletProvider, useWallet } from '@solana/wallet-adapter-react';
|
|
7
6
|
import { WalletModalProvider, useWalletModal } from '@solana/wallet-adapter-react-ui';
|
|
8
|
-
import { useScreen } from '@orderly.network/ui';
|
|
9
|
-
import { SolanaMobileWalletAdapter, createDefaultAuthorizationResultCache, createDefaultAddressSelector } from '@solana-mobile/wallet-adapter-mobile';
|
|
10
7
|
import { PhantomWalletAdapter } from '@solana/wallet-adapter-wallets';
|
|
8
|
+
import { useScreen } from '@orderly.network/ui';
|
|
9
|
+
import { getGlobalObject, hex2int } from '@orderly.network/utils';
|
|
11
10
|
import '@solana/wallet-adapter-react-ui/styles.css';
|
|
11
|
+
import { useSimpleDI, WalletConnectorContext, useStorageLedgerAddress, useEventEmitter } from '@orderly.network/hooks';
|
|
12
12
|
import injectedModule from '@web3-onboard/injected-wallets';
|
|
13
13
|
import { init, useConnectWallet, useSetChain } from '@web3-onboard/react';
|
|
14
14
|
import binanceModule from '@binance/w3w-blocknative-connector';
|
|
15
15
|
import { merge } from 'lodash';
|
|
16
16
|
|
|
17
|
-
// src/
|
|
17
|
+
// src/provider.tsx
|
|
18
18
|
var SolanaContext = createContext({
|
|
19
19
|
network: WalletAdapterNetwork.Devnet,
|
|
20
20
|
endpoint: ""
|
|
@@ -131,8 +131,114 @@ var initConfig = (apiKey, options) => {
|
|
|
131
131
|
return init(mergedOptions);
|
|
132
132
|
};
|
|
133
133
|
var SolanaChains = /* @__PURE__ */ new Map([[WalletAdapterNetwork.Devnet, 901901901], [WalletAdapterNetwork.Mainnet, 900900900]]);
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
function InitEvm(props) {
|
|
135
|
+
const [initialized, setInitialized] = useState(!!props.skipInit);
|
|
136
|
+
const { get, register } = useSimpleDI();
|
|
137
|
+
useEffect(() => {
|
|
138
|
+
document.body.style.setProperty("--onboard-modal-z-index", "88");
|
|
139
|
+
}, []);
|
|
140
|
+
useEffect(() => {
|
|
141
|
+
if (props.skipInit) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
let onboardAPI = get("onboardAPI");
|
|
145
|
+
if (onboardAPI) {
|
|
146
|
+
console.log("[Orderly SDK]:onboardAPI already initialized");
|
|
147
|
+
setInitialized(true);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
Promise.all([
|
|
151
|
+
fetchChainInfo("https://testnet-api.orderly.org/v1/public/chain_info"),
|
|
152
|
+
fetchChainInfo("https://api.orderly.org/v1/public/chain_info")
|
|
153
|
+
]).then(([testChainInfo, mainnetChainInfo]) => {
|
|
154
|
+
const testChains = processChainInfo(testChainInfo);
|
|
155
|
+
const mainnetChains = processChainInfo(mainnetChainInfo);
|
|
156
|
+
let options = props.options || {};
|
|
157
|
+
options = merge({ chains: [...testChains, ...mainnetChains] }, options);
|
|
158
|
+
onboardAPI = initConfig(props.apiKey, options);
|
|
159
|
+
register("onboardAPI", onboardAPI);
|
|
160
|
+
setInitialized(true);
|
|
161
|
+
}).catch((error) => {
|
|
162
|
+
console.error("Error fetching data:", error);
|
|
163
|
+
});
|
|
164
|
+
}, []);
|
|
165
|
+
if (!initialized)
|
|
166
|
+
return null;
|
|
167
|
+
return props.children;
|
|
168
|
+
}
|
|
169
|
+
var fetchChainInfo = async (url) => {
|
|
170
|
+
const response = await fetch(url);
|
|
171
|
+
if (!response.ok) {
|
|
172
|
+
throw new Error(`Failed to fetch data from ${url}`);
|
|
173
|
+
}
|
|
174
|
+
return response.json();
|
|
175
|
+
};
|
|
176
|
+
var processChainInfo = (chainInfo) => chainInfo?.data?.rows?.map((row) => ({
|
|
177
|
+
id: Number(row.chain_id),
|
|
178
|
+
token: row.currency_symbol,
|
|
179
|
+
label: row.name,
|
|
180
|
+
rpcUrl: row.public_rpc_url,
|
|
181
|
+
blockExplorerUrl: row.explorer_base_url
|
|
182
|
+
})) || [];
|
|
183
|
+
function useEvm() {
|
|
184
|
+
const [
|
|
185
|
+
{
|
|
186
|
+
wallet,
|
|
187
|
+
// the wallet that has been connected or null if not yet connected
|
|
188
|
+
connecting
|
|
189
|
+
// boolean indicating if connection is in progress
|
|
190
|
+
},
|
|
191
|
+
connect,
|
|
192
|
+
// function to call to initiate user to connect wallet
|
|
193
|
+
evmDisconnect,
|
|
194
|
+
// function to call with wallet<DisconnectOptions> to disconnect wallet
|
|
195
|
+
updateBalances,
|
|
196
|
+
// function to be called with an optional array of wallet addresses connected through Onboard to update balance or empty/no params to update all connected wallets
|
|
197
|
+
setWalletModules,
|
|
198
|
+
// function to be called with an array of wallet modules to conditionally allow connection of wallet types i.e. setWalletModules([ledger, trezor, injected])
|
|
199
|
+
setPrimaryWallet
|
|
200
|
+
// function that can set the primary wallet and/or primary account within that wallet. The wallet that is set needs to be passed in for the first parameter and if you would like to set the primary account, the address of that account also needs to be passed in
|
|
201
|
+
] = useConnectWallet();
|
|
202
|
+
const [
|
|
203
|
+
{
|
|
204
|
+
chains,
|
|
205
|
+
// the list of chains that web3-onboard was initialized with
|
|
206
|
+
connectedChain: evmConnectChain,
|
|
207
|
+
// the current chain the user's wallet is connected to
|
|
208
|
+
settingChain
|
|
209
|
+
// boolean indicating if the chain is in the process of being set
|
|
210
|
+
},
|
|
211
|
+
setChain
|
|
212
|
+
// function to call to initiate user to switch chains in their wallet
|
|
213
|
+
] = useSetChain();
|
|
214
|
+
const connected = useMemo(() => {
|
|
215
|
+
return !!(wallet && wallet.accounts && wallet.accounts[0] && wallet.accounts[0].address);
|
|
216
|
+
}, [wallet]);
|
|
217
|
+
const disconnect = async () => {
|
|
218
|
+
console.log("-- disconnect evm xxxxxxxxxxxx");
|
|
219
|
+
if (!wallet) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
return evmDisconnect({
|
|
223
|
+
label: wallet.label
|
|
224
|
+
});
|
|
225
|
+
};
|
|
226
|
+
const connectedChain = useMemo(() => {
|
|
227
|
+
return evmConnectChain ? { ...evmConnectChain, id: parseInt(evmConnectChain.id) } : null;
|
|
228
|
+
}, [evmConnectChain]);
|
|
229
|
+
const changeChain = (chain) => {
|
|
230
|
+
return setChain(chain);
|
|
231
|
+
};
|
|
232
|
+
return {
|
|
233
|
+
connect,
|
|
234
|
+
connected,
|
|
235
|
+
disconnect,
|
|
236
|
+
connecting,
|
|
237
|
+
wallet,
|
|
238
|
+
connectedChain,
|
|
239
|
+
changeChain
|
|
240
|
+
};
|
|
241
|
+
}
|
|
136
242
|
function useSOL() {
|
|
137
243
|
const [wallet, setWallet] = useState(null);
|
|
138
244
|
const { isMobile } = useScreen();
|
|
@@ -394,68 +500,9 @@ function useSOL() {
|
|
|
394
500
|
connectedChain
|
|
395
501
|
};
|
|
396
502
|
}
|
|
397
|
-
function useEvm() {
|
|
398
|
-
const [
|
|
399
|
-
{
|
|
400
|
-
wallet,
|
|
401
|
-
// the wallet that has been connected or null if not yet connected
|
|
402
|
-
connecting
|
|
403
|
-
// boolean indicating if connection is in progress
|
|
404
|
-
},
|
|
405
|
-
connect,
|
|
406
|
-
// function to call to initiate user to connect wallet
|
|
407
|
-
evmDisconnect,
|
|
408
|
-
// function to call with wallet<DisconnectOptions> to disconnect wallet
|
|
409
|
-
updateBalances,
|
|
410
|
-
// function to be called with an optional array of wallet addresses connected through Onboard to update balance or empty/no params to update all connected wallets
|
|
411
|
-
setWalletModules,
|
|
412
|
-
// function to be called with an array of wallet modules to conditionally allow connection of wallet types i.e. setWalletModules([ledger, trezor, injected])
|
|
413
|
-
setPrimaryWallet
|
|
414
|
-
// function that can set the primary wallet and/or primary account within that wallet. The wallet that is set needs to be passed in for the first parameter and if you would like to set the primary account, the address of that account also needs to be passed in
|
|
415
|
-
] = useConnectWallet();
|
|
416
|
-
const [
|
|
417
|
-
{
|
|
418
|
-
chains,
|
|
419
|
-
// the list of chains that web3-onboard was initialized with
|
|
420
|
-
connectedChain: evmConnectChain,
|
|
421
|
-
// the current chain the user's wallet is connected to
|
|
422
|
-
settingChain
|
|
423
|
-
// boolean indicating if the chain is in the process of being set
|
|
424
|
-
},
|
|
425
|
-
setChain
|
|
426
|
-
// function to call to initiate user to switch chains in their wallet
|
|
427
|
-
] = useSetChain();
|
|
428
|
-
const connected = useMemo(() => {
|
|
429
|
-
return !!(wallet && wallet.accounts && wallet.accounts[0] && wallet.accounts[0].address);
|
|
430
|
-
}, [wallet]);
|
|
431
|
-
const disconnect = async () => {
|
|
432
|
-
console.log("-- disconnect evm xxxxxxxxxxxx");
|
|
433
|
-
if (!wallet) {
|
|
434
|
-
return;
|
|
435
|
-
}
|
|
436
|
-
return evmDisconnect({
|
|
437
|
-
label: wallet.label
|
|
438
|
-
});
|
|
439
|
-
};
|
|
440
|
-
const connectedChain = useMemo(() => {
|
|
441
|
-
return evmConnectChain ? { ...evmConnectChain, id: parseInt(evmConnectChain.id) } : null;
|
|
442
|
-
}, [evmConnectChain]);
|
|
443
|
-
const changeChain = (chain) => {
|
|
444
|
-
return setChain(chain);
|
|
445
|
-
};
|
|
446
|
-
return {
|
|
447
|
-
connect,
|
|
448
|
-
connected,
|
|
449
|
-
disconnect,
|
|
450
|
-
connecting,
|
|
451
|
-
wallet,
|
|
452
|
-
connectedChain,
|
|
453
|
-
changeChain
|
|
454
|
-
};
|
|
455
|
-
}
|
|
456
503
|
|
|
457
504
|
// src/main.tsx
|
|
458
|
-
|
|
505
|
+
var Main = (props) => {
|
|
459
506
|
const sol = useSOL();
|
|
460
507
|
const evm = useEvm();
|
|
461
508
|
const [namespace, setNamespace] = useState(null);
|
|
@@ -464,7 +511,6 @@ function Main(props) {
|
|
|
464
511
|
if (Array.from(SolanaChains.values()).includes(options.chainId)) {
|
|
465
512
|
newNamespace.current = ChainNamespace.solana;
|
|
466
513
|
return sol.connect().then((res) => {
|
|
467
|
-
console.log("-- connect sol", res);
|
|
468
514
|
if (res) {
|
|
469
515
|
return res;
|
|
470
516
|
}
|
|
@@ -475,13 +521,11 @@ function Main(props) {
|
|
|
475
521
|
autoSelect: options.autoSelect
|
|
476
522
|
} : void 0;
|
|
477
523
|
return evm.connect(evmOption).then((res) => {
|
|
478
|
-
console.log("-- connect evm", res);
|
|
479
524
|
if (!res.length) {
|
|
480
525
|
return Promise.reject({ message: "user reject" });
|
|
481
526
|
}
|
|
482
527
|
return res;
|
|
483
528
|
}).catch((e) => {
|
|
484
|
-
console.log("-- connect evm error", e);
|
|
485
529
|
return Promise.reject(e);
|
|
486
530
|
});
|
|
487
531
|
};
|
|
@@ -502,10 +546,6 @@ function Main(props) {
|
|
|
502
546
|
if (Array.from(SolanaChains.values()).includes(chainId)) {
|
|
503
547
|
tempNamespace = ChainNamespace.solana;
|
|
504
548
|
}
|
|
505
|
-
console.log("--- namespace", {
|
|
506
|
-
namespace,
|
|
507
|
-
tempNamespace
|
|
508
|
-
});
|
|
509
549
|
if (namespace === tempNamespace && namespace === ChainNamespace.evm) {
|
|
510
550
|
return evm.changeChain(chain);
|
|
511
551
|
}
|
|
@@ -534,74 +574,40 @@ function Main(props) {
|
|
|
534
574
|
return;
|
|
535
575
|
}
|
|
536
576
|
}, [newNamespace.current, sol.connected, evm.connected]);
|
|
537
|
-
|
|
538
|
-
|
|
577
|
+
const memoizedValue = useMemo(() => {
|
|
578
|
+
return {
|
|
579
|
+
connect,
|
|
580
|
+
disconnect,
|
|
581
|
+
connecting,
|
|
582
|
+
wallet,
|
|
583
|
+
setChain,
|
|
584
|
+
connectedChain,
|
|
585
|
+
namespace,
|
|
586
|
+
chains: [],
|
|
587
|
+
settingChain: false
|
|
588
|
+
};
|
|
589
|
+
}, [
|
|
590
|
+
connect,
|
|
591
|
+
disconnect,
|
|
592
|
+
connecting,
|
|
593
|
+
wallet,
|
|
594
|
+
setChain,
|
|
595
|
+
connectedChain,
|
|
596
|
+
namespace
|
|
597
|
+
]);
|
|
598
|
+
return /* @__PURE__ */ React.createElement(WalletConnectorContext.Provider, { value: memoizedValue }, props.children);
|
|
599
|
+
};
|
|
600
|
+
|
|
601
|
+
// src/provider.tsx
|
|
602
|
+
var WalletConnectorProvider = (props) => {
|
|
603
|
+
return /* @__PURE__ */ React.createElement(SolanaProvider, { ...props.solanaInitial ?? EMPTY_OBJECT }, /* @__PURE__ */ React.createElement(InitEvm, { ...props.evmInitial ?? EMPTY_OBJECT }, /* @__PURE__ */ React.createElement(
|
|
604
|
+
Main,
|
|
539
605
|
{
|
|
540
|
-
|
|
541
|
-
connect,
|
|
542
|
-
disconnect,
|
|
543
|
-
connecting,
|
|
544
|
-
wallet,
|
|
545
|
-
setChain,
|
|
546
|
-
connectedChain,
|
|
547
|
-
namespace
|
|
548
|
-
}
|
|
606
|
+
solanaNetwork: props.solanaInitial?.network ?? WalletAdapterNetwork.Devnet
|
|
549
607
|
},
|
|
550
608
|
props.children
|
|
551
|
-
);
|
|
552
|
-
}
|
|
553
|
-
function InitEvm(props) {
|
|
554
|
-
const [initialized, setInitialized] = useState(!!props.skipInit);
|
|
555
|
-
const { get, register } = useSimpleDI();
|
|
556
|
-
useEffect(() => {
|
|
557
|
-
document.body.style.setProperty("--onboard-modal-z-index", "88");
|
|
558
|
-
}, []);
|
|
559
|
-
useEffect(() => {
|
|
560
|
-
if (props.skipInit) {
|
|
561
|
-
return;
|
|
562
|
-
}
|
|
563
|
-
let onboardAPI = get("onboardAPI");
|
|
564
|
-
if (onboardAPI) {
|
|
565
|
-
console.log("[Orderly SDK]:onboardAPI already initialized");
|
|
566
|
-
setInitialized(true);
|
|
567
|
-
return;
|
|
568
|
-
}
|
|
569
|
-
Promise.all([
|
|
570
|
-
fetchChainInfo("https://testnet-api.orderly.org/v1/public/chain_info"),
|
|
571
|
-
fetchChainInfo("https://api.orderly.org/v1/public/chain_info")
|
|
572
|
-
]).then(([testChainInfo, mainnetChainInfo]) => {
|
|
573
|
-
const testChains = processChainInfo(testChainInfo);
|
|
574
|
-
const mainnetChains = processChainInfo(mainnetChainInfo);
|
|
575
|
-
let options = props.options || {};
|
|
576
|
-
options = merge({ chains: [...testChains, ...mainnetChains] }, options);
|
|
577
|
-
onboardAPI = initConfig(props.apiKey, options);
|
|
578
|
-
register("onboardAPI", onboardAPI);
|
|
579
|
-
setInitialized(true);
|
|
580
|
-
}).catch((error) => {
|
|
581
|
-
console.error("Error fetching data:", error);
|
|
582
|
-
});
|
|
583
|
-
}, []);
|
|
584
|
-
if (!initialized)
|
|
585
|
-
return null;
|
|
586
|
-
return props.children;
|
|
587
|
-
}
|
|
588
|
-
var fetchChainInfo = async (url) => {
|
|
589
|
-
const response = await fetch(url);
|
|
590
|
-
if (!response.ok) {
|
|
591
|
-
throw new Error(`Failed to fetch data from ${url}`);
|
|
592
|
-
}
|
|
593
|
-
return response.json();
|
|
609
|
+
)));
|
|
594
610
|
};
|
|
595
|
-
var processChainInfo = (chainInfo) => chainInfo?.data?.rows?.map((row) => ({
|
|
596
|
-
id: Number(row.chain_id),
|
|
597
|
-
token: row.currency_symbol,
|
|
598
|
-
label: row.name,
|
|
599
|
-
rpcUrl: row.public_rpc_url,
|
|
600
|
-
blockExplorerUrl: row.explorer_base_url
|
|
601
|
-
})) || [];
|
|
602
|
-
function WalletConnectorProvider(props) {
|
|
603
|
-
return /* @__PURE__ */ React.createElement(SolanaProvider, { ...props.solanaInitial ?? {} }, /* @__PURE__ */ React.createElement(InitEvm, { ...props.evmInitial ?? {} }, /* @__PURE__ */ React.createElement(Main, { solanaNetwork: props.solanaInitial?.network ?? WalletAdapterNetwork.Devnet }, props.children)));
|
|
604
|
-
}
|
|
605
611
|
|
|
606
612
|
export { WalletConnectorProvider };
|
|
607
613
|
//# sourceMappingURL=out.js.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.tsx","../src/useSOL.tsx","../src/SolanaProvider.tsx","../src/config.ts","../src/useEvm.tsx","../src/provider.tsx","../src/initEvm.tsx"],"names":["React","useEffect","useRef","useState","ChainNamespace","useMemo","WalletAdapterNetwork","WalletNotReadyError","useScreen","wallet","signMessage","signTransaction","sendTransaction","merge"],"mappings":"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","sourcesContent":["import React, {\n type PropsWithChildren,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { WalletConnectorContext } from \"@orderly.network/hooks\";\nimport { hex2int, int2hex } from \"@orderly.network/utils\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport { useSOL } from \"./useSOL\";\nimport { useEvm } from \"./useEvm\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\nimport { SolanaChains } from \"./config\";\n\nexport function Main(\n props: PropsWithChildren<{ solanaNetwork: WalletAdapterNetwork }>\n) {\n const sol = useSOL();\n const evm = useEvm();\n\n const [namespace, setNamespace] = useState<ChainNamespace | null>(null);\n\n const newNamespace = useRef<ChainNamespace | null>();\n\n const connect = async (options: any) => {\n if (Array.from(SolanaChains.values()).includes(options.chainId)) {\n newNamespace.current = ChainNamespace.solana;\n // connect solana\n return sol.connect().then((res) => {\n console.log(\"-- connect sol\", res);\n if (res) {\n return res;\n }\n });\n }\n newNamespace.current = ChainNamespace.evm;\n const evmOption = options.autoSelect\n ? {\n autoSelect: options.autoSelect,\n }\n :undefined;\n\n return evm\n .connect(evmOption)\n .then((res) => {\n console.log(\"-- connect evm\", res);\n if (!res.length) {\n return Promise.reject({ message: \"user reject\" });\n }\n return res;\n })\n .catch((e) => {\n console.log(\"-- connect evm error\", e);\n return Promise.reject(e);\n });\n };\n\n const disconnect = async () => {\n if (namespace === ChainNamespace.evm) {\n return evm.disconnect();\n }\n if (namespace === ChainNamespace.solana) {\n return sol.disconnect();\n }\n };\n\n const connecting =\n newNamespace.current == ChainNamespace.solana\n ? sol.connecting\n : evm.connecting;\n\n // console.log('-- connecting', connecting);\n\n const wallet =\n namespace === ChainNamespace.solana && sol.connected\n ? sol.wallet\n : namespace === ChainNamespace.evm && evm.connected\n ? evm.wallet\n : null;\n\n const connectedChain =\n namespace === ChainNamespace.solana\n ? sol.connectedChain\n : evm.connectedChain;\n\n const setChain = (chain: any) => {\n // solana connect\n const chainId =\n typeof chain.chainId === \"number\"\n ? chain.chainId\n : hex2int(chain.chainId);\n // console.log('-- setchain chain',{\n // chain, chainId,\n // });\n\n let tempNamespace: ChainNamespace = ChainNamespace.evm;\n if (Array.from(SolanaChains.values()).includes(chainId)) {\n tempNamespace = ChainNamespace.solana;\n }\n console.log(\"--- namespace\", {\n namespace,\n tempNamespace,\n });\n if (namespace === tempNamespace && namespace === ChainNamespace.evm) {\n // todo switch chan on block native\n\n return evm.changeChain(chain);\n }\n if (namespace !== tempNamespace) {\n return connect({ chainId: chainId }).then();\n }\n };\n\n useEffect(() => {\n // console.log(\"-- connect\", {\n // sol: sol.connected,\n // evm: evm.connected,\n // });\n if (sol.connected && evm.connected) {\n if (newNamespace.current === ChainNamespace.solana) {\n evm.disconnect().then();\n setNamespace(ChainNamespace.solana);\n return;\n } else {\n setNamespace(ChainNamespace.evm);\n sol.disconnect().then();\n return;\n }\n }\n\n if (sol.connected) {\n setNamespace(ChainNamespace.solana);\n return;\n }\n if (evm.connected) {\n setNamespace(ChainNamespace.evm);\n return;\n }\n }, [newNamespace.current, sol.connected, evm.connected]);\n // console.log('--main wallet', {\n // wallet,\n // 'sol wallet': sol.wallet\n // });\n\n return (\n <WalletConnectorContext.Provider\n value={{\n connect,\n disconnect,\n connecting,\n wallet,\n setChain,\n connectedChain,\n namespace,\n }}\n >\n {props.children}\n </WalletConnectorContext.Provider>\n );\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n WalletAdapterNetwork,\n WalletNotReadyError,\n WalletReadyState,\n} from \"@solana/wallet-adapter-base\";\nimport { useConnection, useWallet } from \"@solana/wallet-adapter-react\";\nimport { useWalletModal } from \"@solana/wallet-adapter-react-ui\";\nimport {\n useEventEmitter,\n useLocalStorage,\n useStorageLedgerAddress,\n WalletState,\n} from \"@orderly.network/hooks\";\nimport { ChainNamespace, LedgerWalletKey } from \"@orderly.network/types\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { useSolanaContext } from \"./SolanaProvider\";\nimport { SolanaChainIdEnum, SolanaChains } from \"./config\";\n\nexport function useSOL() {\n const [wallet, setWallet] = useState<WalletState | null>(null);\n const { isMobile } = useScreen();\n const { endpoint, network } = useSolanaContext();\n const { setVisible: setModalVisible, visible } = useWalletModal();\n const { setLedgerAddress } = useStorageLedgerAddress();\n const {\n signMessage,\n signTransaction,\n sendTransaction,\n publicKey,\n wallet: solanaWallet,\n connect: solanaConnect,\n disconnect: solanaDisconnect,\n connecting,\n } = useWallet();\n\n // 1 for open, 2 for close, null for default\n const selectModalVisibleRef = useRef<boolean>(false);\n\n const [connected, setConnected] = useState(false);\n\n const isManual = useRef(false);\n const solanaPromiseRef = useRef<{\n walletSelect: Promise<any> | null;\n connect: Promise<any> | null;\n walletSelectResolve: (value: any) => void;\n walletSelectReject: (value: any) => void;\n connectResolve: (value: any) => void;\n connectReject: (value: any) => void;\n }>({\n walletSelect: null,\n connect: null,\n walletSelectResolve: () => {},\n walletSelectReject: () => {},\n connectReject: () => {},\n connectResolve: () => {},\n });\n const ee = useEventEmitter();\n\n const initPromiseRef = () => {\n console.log(\"-- init solana promise\");\n solanaPromiseRef.current.walletSelectResolve = () => {};\n solanaPromiseRef.current.walletSelectReject = () => {};\n solanaPromiseRef.current.connectReject = () => {};\n solanaPromiseRef.current.connectReject = () => {};\n solanaPromiseRef.current.connect = null;\n solanaPromiseRef.current.walletSelect = null;\n solanaPromiseRef.current.walletSelect = new Promise((resolve, reject) => {\n solanaPromiseRef.current.walletSelectResolve = resolve;\n solanaPromiseRef.current.walletSelectReject = reject;\n });\n solanaPromiseRef.current.connect = new Promise((resolve, reject) => {\n solanaPromiseRef.current.connectResolve = resolve;\n solanaPromiseRef.current.connectReject = reject;\n });\n };\n\n const handleSolanaError = (e: Error) => {\n console.log(\"solan connect error\", e);\n\n if (e instanceof WalletNotReadyError) {\n if (isMobile) {\n console.log(\"-- need toast wallet not ready\", e);\n ee.emit(\"wallet:connect-error\", {\n message: \"Please open the wallet app and use the in-app browser.\",\n });\n }\n }\n solanaDisconnect().then();\n };\n\n const connect = async () => {\n initPromiseRef();\n isManual.current = true;\n if (!solanaPromiseRef.current) {\n return;\n }\n if (!solanaWallet) {\n setModalVisible(true);\n selectModalVisibleRef.current = true;\n } else {\n solanaPromiseRef.current.walletSelectResolve(solanaWallet);\n if (!publicKey) {\n try {\n await solanaConnect();\n } catch (e) {\n solanaPromiseRef.current.connectReject(e);\n }\n } else {\n solanaPromiseRef.current.connectResolve({\n userAddress: publicKey.toBase58(),\n signMessage,\n signTransaction,\n sendTransaction,\n });\n }\n }\n\n console.log(\"-- connect fn\", solanaWallet, publicKey);\n return Promise.all([\n solanaPromiseRef.current.walletSelect,\n solanaPromiseRef.current.connect,\n ])\n .then(\n ([\n wallet,\n { userAddress, signMessage, signTransaction, sendTransaction },\n ]) => {\n // console.log('-- connect sol res',{\n // wallet,\n // userAddress, signMessage, sendTransaction\n // });\n const tempWallet = {\n label: wallet.adapter.name,\n icon: \"\",\n provider: {\n rpcUrl: endpoint,\n network: network,\n signMessage: signMessage,\n signTransaction,\n sendTransaction,\n },\n accounts: [\n {\n address: userAddress,\n },\n ],\n chains: [\n {\n id: SolanaChains.get(network)!,\n namespace: ChainNamespace.solana,\n },\n ],\n };\n if (wallet.adapter.name === \"Ledger\") {\n setLedgerAddress(userAddress);\n }\n setWallet(tempWallet);\n setConnected(true);\n return [tempWallet];\n },\n )\n .catch((e) => {\n console.log(\"connect solana error\", e);\n handleSolanaError(e);\n return Promise.reject(e);\n })\n .finally(() => {\n isManual.current = false;\n });\n };\n\n const disconnect = async () => {\n console.log(\"--- discconnect sol\");\n await solanaDisconnect();\n setWallet(null);\n setConnected(false);\n return [];\n };\n\n const connectedChain = useMemo(() => {\n if (!publicKey) {\n return null;\n }\n return {\n id:\n network === WalletAdapterNetwork.Mainnet\n ? SolanaChainIdEnum.MAINNET\n : SolanaChainIdEnum.DEVNET,\n namespace: ChainNamespace.solana,\n };\n }, [publicKey]);\n\n useEffect(() => {\n if (selectModalVisibleRef.current) {\n if (!visible && !solanaWallet && solanaPromiseRef.current) {\n console.log(\n \"-- select modal visible ref\",\n selectModalVisibleRef.current,\n );\n console.log(\"-- use reject solana select modal\");\n solanaPromiseRef.current.walletSelectReject(\"user reject\");\n selectModalVisibleRef.current = false;\n } else if (solanaWallet) {\n selectModalVisibleRef.current = false;\n }\n }\n }, [\n visible,\n solanaWallet,\n solanaPromiseRef.current,\n selectModalVisibleRef.current,\n ]);\n\n useEffect(() => {\n if (!solanaWallet || !publicKey) {\n console.log(\"--- not connect sol\", solanaWallet, publicKey);\n setConnected(false);\n return;\n }\n console.log(\"-- publick\", {\n publicKey: publicKey.toBase58(),\n isManual: isManual.current,\n });\n\n if (isManual.current) {\n if (solanaPromiseRef.current) {\n solanaPromiseRef.current.connectResolve({\n userAddress: publicKey?.toBase58(),\n signMessage,\n signTransaction,\n sendTransaction,\n });\n }\n return;\n }\n const userAddress = publicKey.toBase58();\n setWallet({\n label: solanaWallet.adapter.name,\n icon: \"\",\n provider: {\n signMessage: signMessage!,\n signTransaction: signTransaction!,\n sendTransaction: sendTransaction!,\n rpcUrl: endpoint,\n network: network,\n },\n accounts: [\n {\n address: userAddress,\n },\n ],\n chains: [\n {\n id: SolanaChains.get(network)!,\n namespace: ChainNamespace.solana,\n },\n ],\n });\n if (solanaWallet.adapter.name === \"Ledger\") {\n setLedgerAddress(userAddress);\n }\n\n setConnected(true);\n }, [\n publicKey,\n solanaWallet,\n signMessage,\n signTransaction,\n isManual,\n sendTransaction,\n endpoint,\n network,\n ]);\n\n useEffect(() => {\n if (!solanaWallet) {\n return;\n }\n console.log(\"-- public key\", publicKey, { isMobile });\n if (\n isMobile &&\n solanaWallet.readyState === WalletReadyState.Loadable &&\n !isManual.current\n ) {\n solanaDisconnect().then();\n return;\n }\n\n console.log(\"-- solana refresh auto connect\", solanaWallet);\n\n if (solanaPromiseRef.current) {\n solanaPromiseRef.current.walletSelectResolve(solanaWallet);\n }\n }, [\n solanaWallet,\n solanaConnect,\n publicKey,\n solanaDisconnect,\n handleSolanaError,\n isMobile,\n ]);\n\n return {\n connected,\n connect,\n disconnect,\n connecting,\n wallet,\n connectedChain,\n };\n}\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport {\n createDefaultAddressSelector,\n createDefaultAuthorizationResultCache,\n SolanaMobileWalletAdapter,\n} from \"@solana-mobile/wallet-adapter-mobile\";\nimport {\n Adapter,\n WalletAdapterNetwork,\n WalletError,\n WalletNotReadyError,\n} from \"@solana/wallet-adapter-base\";\nimport {\n ConnectionProvider,\n WalletProvider,\n} from \"@solana/wallet-adapter-react\";\nimport { WalletModalProvider } from \"@solana/wallet-adapter-react-ui\";\nimport { PhantomWalletAdapter } from \"@solana/wallet-adapter-wallets\";\nimport { clusterApiUrl } from \"@solana/web3.js\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { getGlobalObject } from \"@orderly.network/utils\";\nimport { SolanaInitialProps } from \"./types\";\nimport \"@solana/wallet-adapter-react-ui/styles.css\";\n\nconst SolanaContext = createContext<{\n network: WalletAdapterNetwork;\n endpoint: string;\n}>({\n network: WalletAdapterNetwork.Devnet,\n endpoint: \"\",\n});\n\nexport const useSolanaContext = () => {\n const context = useContext(SolanaContext);\n\n if (context === undefined) {\n throw new Error(\"useSolanaContext must be used within a SolanaProvider\");\n }\n\n return context;\n};\n\nexport function SolanaProvider({ children, ...props }: SolanaInitialProps) {\n const { isMobile } = useScreen();\n const network = useMemo(\n () => props.network ?? WalletAdapterNetwork.Devnet,\n [props.network],\n );\n\n const endpoint = useMemo(() => {\n if (network === WalletAdapterNetwork.Mainnet) {\n return props.mainnetRpc ?? \"\";\n }\n if (network === WalletAdapterNetwork.Devnet) {\n return props.devnetRpc ?? \"\";\n }\n return \"\";\n }, [network, props.mainnetRpc, props.devnetRpc]);\n\n const mobileWalletNotFoundHanlder = (adapter: SolanaMobileWalletAdapter) => {\n console.log(\"-- mobile wallet adapter\", adapter);\n return Promise.reject(new WalletNotReadyError(\"wallet not ready\"));\n };\n\n const handleSolanaError = (error: WalletError, adapter?: Adapter) => {\n console.log(\"-- solanan error\", error);\n console.log(\"-- solana adapter\", adapter);\n\n if (!isMobile && error instanceof WalletNotReadyError) {\n window.open(adapter?.url, \"_blank\");\n }\n };\n\n const wallets = useMemo(() => {\n let uri = \"\";\n if (typeof window !== \"undefined\") {\n const location = (getGlobalObject() as any).location;\n uri = `${location.protocol}//${location.host}`;\n }\n\n return (\n props.wallets ?? [\n new PhantomWalletAdapter(),\n new SolanaMobileWalletAdapter({\n addressSelector: createDefaultAddressSelector(),\n appIdentity: {\n uri,\n },\n authorizationResultCache: createDefaultAuthorizationResultCache(),\n chain: network,\n onWalletNotFound: mobileWalletNotFoundHanlder,\n }),\n ]\n );\n }, [props.wallets, network]);\n\n const contextValue = useMemo(\n () => ({\n network,\n endpoint,\n }),\n [network, endpoint],\n );\n\n return (\n <SolanaContext.Provider value={contextValue}>\n <WalletProvider\n wallets={wallets}\n onError={props.onError ?? handleSolanaError}\n autoConnect={true}\n >\n <WalletModalProvider className=\"oui-pointer-events-auto\">\n {children}\n </WalletModalProvider>\n </WalletProvider>\n </SolanaContext.Provider>\n );\n}\n","import injectedModule from \"@web3-onboard/injected-wallets\";\nimport { init } from \"@web3-onboard/react\";\nimport type { InitOptions, OnboardAPI } from \"@web3-onboard/core\";\nimport binanceModule from \"@binance/w3w-blocknative-connector\";\n// import bitgetWalletModule from \"@web3-onboard/bitget\";\nimport { merge } from \"lodash\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\n\n// initialize the module with options\nconst binance = binanceModule({ options: { lng: \"en\" } });\n// const bitgetWallet = bitgetWalletModule();\n\nexport const initConfig: (\n apiKey?: string,\n options?: InitOptions\n) => OnboardAPI = (apiKey, options) => {\n const defaultOptions = {\n apiKey,\n connect: {\n // autoConnectAllPreviousWallet: true,\n autoConnectLastWallet: true,\n },\n wallets: [injectedModule(), binance],\n chains: [],\n appMetadata: {\n name: \"Orderly\",\n // icon: blocknativeIcon,\n description: \"Orderly\",\n recommendedInjectedWallets: [\n { name: \"Coinbase\", url: \"https://wallet.coinbase.com/\" },\n { name: \"MetaMask\", url: \"https://metamask.io\" },\n { name: \"Trezor\", url: \"https://trezor.io/\" },\n { name: \"Walletconnect\", url: \"https://walletconnect.com/\" },\n { name: \"Ledger\", url: \"https://www.ledger.com/\" },\n ],\n agreement: {\n version: \"1.0.0\",\n termsUrl: \"https://www.blocknative.com/terms-conditions\",\n privacyUrl: \"https://www.blocknative.com/privacy-policy\",\n },\n gettingStartedGuide: \"https://blocknative.com\",\n explore: \"https://blocknative.com\",\n },\n accountCenter: {\n desktop: {\n enabled: false,\n },\n mobile: {\n enabled: false,\n },\n },\n theme: \"dark\",\n } as InitOptions;\n\n const mergedOptions = merge(defaultOptions, options);\n\n return init(mergedOptions);\n};\n\nexport enum SolanaChainIdEnum {\n MAINNET = 900900900,\n DEVNET = 901901901,\n}\n\nexport const SolanaChains = new Map([[WalletAdapterNetwork.Devnet, 901901901], [WalletAdapterNetwork.Mainnet, 900900900]]);\n\n","import { useConnectWallet, useSetChain } from \"@web3-onboard/react\";\nimport { useMemo } from \"react\";\n\nexport function useEvm() {\n const [\n {\n wallet, // the wallet that has been connected or null if not yet connected\n connecting, // boolean indicating if connection is in progress\n },\n connect, // function to call to initiate user to connect wallet\n evmDisconnect, // function to call with wallet<DisconnectOptions> to disconnect wallet\n updateBalances, // function to be called with an optional array of wallet addresses connected through Onboard to update balance or empty/no params to update all connected wallets\n setWalletModules, // function to be called with an array of wallet modules to conditionally allow connection of wallet types i.e. setWalletModules([ledger, trezor, injected])\n setPrimaryWallet, // function that can set the primary wallet and/or primary account within that wallet. The wallet that is set needs to be passed in for the first parameter and if you would like to set the primary account, the address of that account also needs to be passed in\n ] = useConnectWallet();\n\n const [\n {\n chains, // the list of chains that web3-onboard was initialized with\n connectedChain: evmConnectChain, // the current chain the user's wallet is connected to\n settingChain, // boolean indicating if the chain is in the process of being set\n },\n setChain, // function to call to initiate user to switch chains in their wallet\n ] = useSetChain();\n\n const connected = useMemo(() => {\n return !!(wallet && wallet.accounts && wallet.accounts[0] && wallet.accounts[0].address);\n }, [wallet]);\n\n const disconnect = async () => {\n console.log('-- disconnect evm xxxxxxxxxxxx');\n if (!wallet) {\n return;\n }\n return evmDisconnect({\n label: wallet.label,\n });\n };\n\n const connectedChain = useMemo(() => {\n return evmConnectChain\n ? { ...evmConnectChain, id: parseInt(evmConnectChain.id) }\n : null;\n }, [evmConnectChain]);\n\n const changeChain = (chain: { chainId: string}): Promise<any> =>{\n return setChain(chain);\n }\n\n return {\n connect,\n connected,\n disconnect,\n connecting,\n wallet,\n connectedChain,\n changeChain,\n\n };\n}\n","import { Main } from \"./main\";\nimport React, { type PropsWithChildren } from \"react\";\nimport { EvmInitialProps, SolanaInitialProps } from \"./types\";\nimport { InitEvm } from \"./initEvm\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\nimport { SolanaProvider } from \"./SolanaProvider\";\n\nexport interface WalletConnectorProviderProps {\n solanaInitial?: SolanaInitialProps;\n evmInitial?: EvmInitialProps;\n}\n\nexport function WalletConnectorProvider(\n props: PropsWithChildren<WalletConnectorProviderProps>\n) {\n return (\n <SolanaProvider {...(props.solanaInitial ?? {})}>\n\n <InitEvm {...(props.evmInitial ?? {})}>\n <Main solanaNetwork={props.solanaInitial?.network ?? WalletAdapterNetwork.Devnet}>{props.children}</Main>\n </InitEvm>\n </SolanaProvider>\n );\n}\n","import React, { PropsWithChildren, useEffect, useState } from \"react\";\nimport { useSimpleDI } from \"@orderly.network/hooks\";\nimport type { InitOptions, OnboardAPI } from \"@web3-onboard/core\";\nimport { Optional } from \"@orderly.network/types\";\nimport { initConfig } from \"./config\";\nimport { merge } from \"lodash\";\n\n\nexport type ConnectorInitOptions = Optional<\n InitOptions,\n | \"apiKey\"\n | \"connect\"\n | \"wallets\"\n | \"chains\"\n | \"appMetadata\"\n | \"accountCenter\"\n | \"theme\"\n>;\n\nexport interface WalletConnectorProviderProps {\n apiKey?: string;\n options?: ConnectorInitOptions;\n // skip board configuration if already initialized\n skipInit?: boolean;\n}\n\nexport function InitEvm(\n props: PropsWithChildren<WalletConnectorProviderProps>\n) {\n const [initialized, setInitialized] = useState(!!props.skipInit);\n\n const { get, register } = useSimpleDI();\n\n useEffect(() => {\n document.body.style.setProperty(\"--onboard-modal-z-index\", \"88\");\n }, []);\n\n useEffect(() => {\n if (props.skipInit) {\n return;\n }\n\n let onboardAPI = get(\"onboardAPI\") as OnboardAPI;\n\n if (onboardAPI) {\n console.log(\"[Orderly SDK]:onboardAPI already initialized\");\n setInitialized(true);\n return;\n }\n\n Promise.all([\n fetchChainInfo('https://testnet-api.orderly.org/v1/public/chain_info'),\n fetchChainInfo('https://api.orderly.org/v1/public/chain_info'),\n ])\n .then(([testChainInfo, mainnetChainInfo]) => {\n const testChains = processChainInfo(testChainInfo);\n const mainnetChains = processChainInfo(mainnetChainInfo);\n\n let options = props.options || {};\n options = merge({ chains: [...testChains, ...mainnetChains] }, options);\n\n onboardAPI = initConfig(props.apiKey, options as InitOptions);\n register('onboardAPI', onboardAPI);\n setInitialized(true);\n })\n .catch((error) => {\n console.error('Error fetching data:', error);\n });\n }, []);\n\n if (!initialized) return null;\n\n return props.children\n}\n\nconst fetchChainInfo = async (url: string) => {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`Failed to fetch data from ${url}`);\n }\n return response.json();\n};\n\nconst processChainInfo = (chainInfo: any) =>\n chainInfo?.data?.rows?.map((row: any) => ({\n id: Number(row.chain_id),\n token: row.currency_symbol,\n label: row.name,\n rpcUrl: row.public_rpc_url,\n blockExplorerUrl: row.explorer_base_url,\n })) || [];\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/provider.tsx","../src/SolanaProvider.tsx","../src/initEvm.tsx","../src/config.ts","../src/main.tsx","../src/useEvm.tsx","../src/useSOL.tsx"],"names":["React","WalletAdapterNetwork","merge","useEffect","useMemo","useRef","useState","ChainNamespace","WalletNotReadyError","useScreen","wallet","signMessage","signTransaction","sendTransaction"],"mappings":"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","sourcesContent":["import React, { type PropsWithChildren } from \"react\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\nimport { EMPTY_OBJECT } from \"@orderly.network/types\";\nimport { SolanaProvider } from \"./SolanaProvider\";\nimport { InitEvm } from \"./initEvm\";\nimport { Main } from \"./main\";\nimport { EvmInitialProps, SolanaInitialProps } from \"./types\";\n\nexport interface WalletConnectorProviderProps {\n solanaInitial?: SolanaInitialProps;\n evmInitial?: EvmInitialProps;\n}\n\nexport const WalletConnectorProvider: React.FC<\n PropsWithChildren<WalletConnectorProviderProps>\n> = (props) => {\n return (\n <SolanaProvider {...(props.solanaInitial ?? EMPTY_OBJECT)}>\n <InitEvm {...(props.evmInitial ?? EMPTY_OBJECT)}>\n <Main\n solanaNetwork={\n props.solanaInitial?.network ?? WalletAdapterNetwork.Devnet\n }\n >\n {props.children}\n </Main>\n </InitEvm>\n </SolanaProvider>\n );\n};\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport {\n createDefaultAddressSelector,\n createDefaultAuthorizationResultCache,\n SolanaMobileWalletAdapter,\n} from \"@solana-mobile/wallet-adapter-mobile\";\nimport {\n Adapter,\n WalletAdapterNetwork,\n WalletError,\n WalletNotReadyError,\n} from \"@solana/wallet-adapter-base\";\nimport {\n ConnectionProvider,\n WalletProvider,\n} from \"@solana/wallet-adapter-react\";\nimport { WalletModalProvider } from \"@solana/wallet-adapter-react-ui\";\nimport { PhantomWalletAdapter } from \"@solana/wallet-adapter-wallets\";\nimport { clusterApiUrl } from \"@solana/web3.js\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { getGlobalObject } from \"@orderly.network/utils\";\nimport { SolanaInitialProps } from \"./types\";\nimport \"@solana/wallet-adapter-react-ui/styles.css\";\n\nconst SolanaContext = createContext<{\n network: WalletAdapterNetwork;\n endpoint: string;\n}>({\n network: WalletAdapterNetwork.Devnet,\n endpoint: \"\",\n});\n\nexport const useSolanaContext = () => {\n const context = useContext(SolanaContext);\n\n if (context === undefined) {\n throw new Error(\"useSolanaContext must be used within a SolanaProvider\");\n }\n\n return context;\n};\n\nexport function SolanaProvider({ children, ...props }: SolanaInitialProps) {\n const { isMobile } = useScreen();\n const network = useMemo(\n () => props.network ?? WalletAdapterNetwork.Devnet,\n [props.network],\n );\n\n const endpoint = useMemo(() => {\n if (network === WalletAdapterNetwork.Mainnet) {\n return props.mainnetRpc ?? \"\";\n }\n if (network === WalletAdapterNetwork.Devnet) {\n return props.devnetRpc ?? \"\";\n }\n return \"\";\n }, [network, props.mainnetRpc, props.devnetRpc]);\n\n const mobileWalletNotFoundHanlder = (adapter: SolanaMobileWalletAdapter) => {\n console.log(\"-- mobile wallet adapter\", adapter);\n return Promise.reject(new WalletNotReadyError(\"wallet not ready\"));\n };\n\n const handleSolanaError = (error: WalletError, adapter?: Adapter) => {\n console.log(\"-- solanan error\", error);\n console.log(\"-- solana adapter\", adapter);\n\n if (!isMobile && error instanceof WalletNotReadyError) {\n window.open(adapter?.url, \"_blank\");\n }\n };\n\n const wallets = useMemo(() => {\n let uri = \"\";\n if (typeof window !== \"undefined\") {\n const location = (getGlobalObject() as any).location;\n uri = `${location.protocol}//${location.host}`;\n }\n\n return (\n props.wallets ?? [\n new PhantomWalletAdapter(),\n new SolanaMobileWalletAdapter({\n addressSelector: createDefaultAddressSelector(),\n appIdentity: {\n uri,\n },\n authorizationResultCache: createDefaultAuthorizationResultCache(),\n chain: network,\n onWalletNotFound: mobileWalletNotFoundHanlder,\n }),\n ]\n );\n }, [props.wallets, network]);\n\n const contextValue = useMemo(\n () => ({\n network,\n endpoint,\n }),\n [network, endpoint],\n );\n\n return (\n <SolanaContext.Provider value={contextValue}>\n <WalletProvider\n wallets={wallets}\n onError={props.onError ?? handleSolanaError}\n autoConnect={true}\n >\n <WalletModalProvider className=\"oui-pointer-events-auto\">\n {children}\n </WalletModalProvider>\n </WalletProvider>\n </SolanaContext.Provider>\n );\n}\n","import React, { PropsWithChildren, useEffect, useState } from \"react\";\nimport { useSimpleDI } from \"@orderly.network/hooks\";\nimport type { InitOptions, OnboardAPI } from \"@web3-onboard/core\";\nimport { Optional } from \"@orderly.network/types\";\nimport { initConfig } from \"./config\";\nimport { merge } from \"lodash\";\n\n\nexport type ConnectorInitOptions = Optional<\n InitOptions,\n | \"apiKey\"\n | \"connect\"\n | \"wallets\"\n | \"chains\"\n | \"appMetadata\"\n | \"accountCenter\"\n | \"theme\"\n>;\n\nexport interface WalletConnectorProviderProps {\n apiKey?: string;\n options?: ConnectorInitOptions;\n // skip board configuration if already initialized\n skipInit?: boolean;\n}\n\nexport function InitEvm(\n props: PropsWithChildren<WalletConnectorProviderProps>\n) {\n const [initialized, setInitialized] = useState(!!props.skipInit);\n\n const { get, register } = useSimpleDI();\n\n useEffect(() => {\n document.body.style.setProperty(\"--onboard-modal-z-index\", \"88\");\n }, []);\n\n useEffect(() => {\n if (props.skipInit) {\n return;\n }\n\n let onboardAPI = get(\"onboardAPI\") as OnboardAPI;\n\n if (onboardAPI) {\n console.log(\"[Orderly SDK]:onboardAPI already initialized\");\n setInitialized(true);\n return;\n }\n\n Promise.all([\n fetchChainInfo('https://testnet-api.orderly.org/v1/public/chain_info'),\n fetchChainInfo('https://api.orderly.org/v1/public/chain_info'),\n ])\n .then(([testChainInfo, mainnetChainInfo]) => {\n const testChains = processChainInfo(testChainInfo);\n const mainnetChains = processChainInfo(mainnetChainInfo);\n\n let options = props.options || {};\n options = merge({ chains: [...testChains, ...mainnetChains] }, options);\n\n onboardAPI = initConfig(props.apiKey, options as InitOptions);\n register('onboardAPI', onboardAPI);\n setInitialized(true);\n })\n .catch((error) => {\n console.error('Error fetching data:', error);\n });\n }, []);\n\n if (!initialized) return null;\n\n return props.children\n}\n\nconst fetchChainInfo = async (url: string) => {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`Failed to fetch data from ${url}`);\n }\n return response.json();\n};\n\nconst processChainInfo = (chainInfo: any) =>\n chainInfo?.data?.rows?.map((row: any) => ({\n id: Number(row.chain_id),\n token: row.currency_symbol,\n label: row.name,\n rpcUrl: row.public_rpc_url,\n blockExplorerUrl: row.explorer_base_url,\n })) || [];\n","import injectedModule from \"@web3-onboard/injected-wallets\";\nimport { init } from \"@web3-onboard/react\";\nimport type { InitOptions, OnboardAPI } from \"@web3-onboard/core\";\nimport binanceModule from \"@binance/w3w-blocknative-connector\";\n// import bitgetWalletModule from \"@web3-onboard/bitget\";\nimport { merge } from \"lodash\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\n\n// initialize the module with options\nconst binance = binanceModule({ options: { lng: \"en\" } });\n// const bitgetWallet = bitgetWalletModule();\n\nexport const initConfig: (\n apiKey?: string,\n options?: InitOptions\n) => OnboardAPI = (apiKey, options) => {\n const defaultOptions = {\n apiKey,\n connect: {\n // autoConnectAllPreviousWallet: true,\n autoConnectLastWallet: true,\n },\n wallets: [injectedModule(), binance],\n chains: [],\n appMetadata: {\n name: \"Orderly\",\n // icon: blocknativeIcon,\n description: \"Orderly\",\n recommendedInjectedWallets: [\n { name: \"Coinbase\", url: \"https://wallet.coinbase.com/\" },\n { name: \"MetaMask\", url: \"https://metamask.io\" },\n { name: \"Trezor\", url: \"https://trezor.io/\" },\n { name: \"Walletconnect\", url: \"https://walletconnect.com/\" },\n { name: \"Ledger\", url: \"https://www.ledger.com/\" },\n ],\n agreement: {\n version: \"1.0.0\",\n termsUrl: \"https://www.blocknative.com/terms-conditions\",\n privacyUrl: \"https://www.blocknative.com/privacy-policy\",\n },\n gettingStartedGuide: \"https://blocknative.com\",\n explore: \"https://blocknative.com\",\n },\n accountCenter: {\n desktop: {\n enabled: false,\n },\n mobile: {\n enabled: false,\n },\n },\n theme: \"dark\",\n } as InitOptions;\n\n const mergedOptions = merge(defaultOptions, options);\n\n return init(mergedOptions);\n};\n\nexport enum SolanaChainIdEnum {\n MAINNET = 900900900,\n DEVNET = 901901901,\n}\n\nexport const SolanaChains = new Map([[WalletAdapterNetwork.Devnet, 901901901], [WalletAdapterNetwork.Mainnet, 900900900]]);\n\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\nimport { WalletConnectorContext } from \"@orderly.network/hooks\";\nimport type { WalletConnectorContextState } from \"@orderly.network/hooks\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport { hex2int } from \"@orderly.network/utils\";\nimport { SolanaChains } from \"./config\";\nimport { useEvm } from \"./useEvm\";\nimport { useSOL } from \"./useSOL\";\n\nexport const Main: React.FC<\n React.PropsWithChildren<{ solanaNetwork: WalletAdapterNetwork }>\n> = (props) => {\n const sol = useSOL();\n const evm = useEvm();\n\n const [namespace, setNamespace] = useState<ChainNamespace | null>(null);\n\n const newNamespace = useRef<ChainNamespace | null>();\n\n const connect = async (options: any) => {\n if (Array.from(SolanaChains.values()).includes(options.chainId)) {\n newNamespace.current = ChainNamespace.solana;\n // connect solana\n return sol.connect().then((res) => {\n if (res) {\n return res;\n }\n });\n }\n newNamespace.current = ChainNamespace.evm;\n const evmOption = options.autoSelect\n ? {\n autoSelect: options.autoSelect,\n }\n : undefined;\n\n return evm\n .connect(evmOption)\n .then((res) => {\n if (!res.length) {\n return Promise.reject({ message: \"user reject\" });\n }\n return res;\n })\n .catch((e) => {\n return Promise.reject(e);\n });\n };\n\n const disconnect = async () => {\n if (namespace === ChainNamespace.evm) {\n return evm.disconnect();\n }\n if (namespace === ChainNamespace.solana) {\n return sol.disconnect();\n }\n };\n\n const connecting =\n newNamespace.current == ChainNamespace.solana\n ? sol.connecting\n : evm.connecting;\n\n // console.log('-- connecting', connecting);\n\n const wallet =\n namespace === ChainNamespace.solana && sol.connected\n ? sol.wallet\n : namespace === ChainNamespace.evm && evm.connected\n ? evm.wallet\n : null;\n\n const connectedChain =\n namespace === ChainNamespace.solana\n ? sol.connectedChain\n : evm.connectedChain;\n\n const setChain = (chain: any) => {\n // solana connect\n const chainId =\n typeof chain.chainId === \"number\"\n ? chain.chainId\n : hex2int(chain.chainId);\n // console.log('-- setchain chain',{\n // chain, chainId,\n // });\n\n let tempNamespace: ChainNamespace = ChainNamespace.evm;\n if (Array.from(SolanaChains.values()).includes(chainId)) {\n tempNamespace = ChainNamespace.solana;\n }\n\n if (namespace === tempNamespace && namespace === ChainNamespace.evm) {\n // todo switch chan on block native\n\n return evm.changeChain(chain);\n }\n if (namespace !== tempNamespace) {\n return connect({ chainId: chainId }).then();\n }\n };\n\n useEffect(() => {\n if (sol.connected && evm.connected) {\n if (newNamespace.current === ChainNamespace.solana) {\n evm.disconnect().then();\n setNamespace(ChainNamespace.solana);\n return;\n } else {\n setNamespace(ChainNamespace.evm);\n sol.disconnect().then();\n return;\n }\n }\n\n if (sol.connected) {\n setNamespace(ChainNamespace.solana);\n return;\n }\n if (evm.connected) {\n setNamespace(ChainNamespace.evm);\n return;\n }\n }, [newNamespace.current, sol.connected, evm.connected]);\n\n const memoizedValue = useMemo<WalletConnectorContextState>(() => {\n return {\n connect: connect as any,\n disconnect: disconnect as any,\n connecting,\n wallet: wallet as any,\n setChain: setChain as any,\n connectedChain: connectedChain as any,\n namespace: namespace,\n chains: [],\n settingChain: false,\n };\n }, [\n connect,\n disconnect,\n connecting,\n wallet,\n setChain,\n connectedChain,\n namespace,\n ]);\n\n return (\n <WalletConnectorContext.Provider value={memoizedValue}>\n {props.children}\n </WalletConnectorContext.Provider>\n );\n};\n","import { useConnectWallet, useSetChain } from \"@web3-onboard/react\";\nimport { useMemo } from \"react\";\n\nexport function useEvm() {\n const [\n {\n wallet, // the wallet that has been connected or null if not yet connected\n connecting, // boolean indicating if connection is in progress\n },\n connect, // function to call to initiate user to connect wallet\n evmDisconnect, // function to call with wallet<DisconnectOptions> to disconnect wallet\n updateBalances, // function to be called with an optional array of wallet addresses connected through Onboard to update balance or empty/no params to update all connected wallets\n setWalletModules, // function to be called with an array of wallet modules to conditionally allow connection of wallet types i.e. setWalletModules([ledger, trezor, injected])\n setPrimaryWallet, // function that can set the primary wallet and/or primary account within that wallet. The wallet that is set needs to be passed in for the first parameter and if you would like to set the primary account, the address of that account also needs to be passed in\n ] = useConnectWallet();\n\n const [\n {\n chains, // the list of chains that web3-onboard was initialized with\n connectedChain: evmConnectChain, // the current chain the user's wallet is connected to\n settingChain, // boolean indicating if the chain is in the process of being set\n },\n setChain, // function to call to initiate user to switch chains in their wallet\n ] = useSetChain();\n\n const connected = useMemo(() => {\n return !!(wallet && wallet.accounts && wallet.accounts[0] && wallet.accounts[0].address);\n }, [wallet]);\n\n const disconnect = async () => {\n console.log('-- disconnect evm xxxxxxxxxxxx');\n if (!wallet) {\n return;\n }\n return evmDisconnect({\n label: wallet.label,\n });\n };\n\n const connectedChain = useMemo(() => {\n return evmConnectChain\n ? { ...evmConnectChain, id: parseInt(evmConnectChain.id) }\n : null;\n }, [evmConnectChain]);\n\n const changeChain = (chain: { chainId: string}): Promise<any> =>{\n return setChain(chain);\n }\n\n return {\n connect,\n connected,\n disconnect,\n connecting,\n wallet,\n connectedChain,\n changeChain,\n\n };\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n WalletAdapterNetwork,\n WalletNotReadyError,\n WalletReadyState,\n} from \"@solana/wallet-adapter-base\";\nimport { useConnection, useWallet } from \"@solana/wallet-adapter-react\";\nimport { useWalletModal } from \"@solana/wallet-adapter-react-ui\";\nimport {\n useEventEmitter,\n useLocalStorage,\n useStorageLedgerAddress,\n WalletState,\n} from \"@orderly.network/hooks\";\nimport { ChainNamespace, LedgerWalletKey } from \"@orderly.network/types\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { useSolanaContext } from \"./SolanaProvider\";\nimport { SolanaChainIdEnum, SolanaChains } from \"./config\";\n\nexport function useSOL() {\n const [wallet, setWallet] = useState<WalletState | null>(null);\n const { isMobile } = useScreen();\n const { endpoint, network } = useSolanaContext();\n const { setVisible: setModalVisible, visible } = useWalletModal();\n const { setLedgerAddress } = useStorageLedgerAddress();\n const {\n signMessage,\n signTransaction,\n sendTransaction,\n publicKey,\n wallet: solanaWallet,\n connect: solanaConnect,\n disconnect: solanaDisconnect,\n connecting,\n } = useWallet();\n\n // 1 for open, 2 for close, null for default\n const selectModalVisibleRef = useRef<boolean>(false);\n\n const [connected, setConnected] = useState(false);\n\n const isManual = useRef(false);\n const solanaPromiseRef = useRef<{\n walletSelect: Promise<any> | null;\n connect: Promise<any> | null;\n walletSelectResolve: (value: any) => void;\n walletSelectReject: (value: any) => void;\n connectResolve: (value: any) => void;\n connectReject: (value: any) => void;\n }>({\n walletSelect: null,\n connect: null,\n walletSelectResolve: () => {},\n walletSelectReject: () => {},\n connectReject: () => {},\n connectResolve: () => {},\n });\n const ee = useEventEmitter();\n\n const initPromiseRef = () => {\n console.log(\"-- init solana promise\");\n solanaPromiseRef.current.walletSelectResolve = () => {};\n solanaPromiseRef.current.walletSelectReject = () => {};\n solanaPromiseRef.current.connectReject = () => {};\n solanaPromiseRef.current.connectReject = () => {};\n solanaPromiseRef.current.connect = null;\n solanaPromiseRef.current.walletSelect = null;\n solanaPromiseRef.current.walletSelect = new Promise((resolve, reject) => {\n solanaPromiseRef.current.walletSelectResolve = resolve;\n solanaPromiseRef.current.walletSelectReject = reject;\n });\n solanaPromiseRef.current.connect = new Promise((resolve, reject) => {\n solanaPromiseRef.current.connectResolve = resolve;\n solanaPromiseRef.current.connectReject = reject;\n });\n };\n\n const handleSolanaError = (e: Error) => {\n console.log(\"solan connect error\", e);\n\n if (e instanceof WalletNotReadyError) {\n if (isMobile) {\n console.log(\"-- need toast wallet not ready\", e);\n ee.emit(\"wallet:connect-error\", {\n message: \"Please open the wallet app and use the in-app browser.\",\n });\n }\n }\n solanaDisconnect().then();\n };\n\n const connect = async () => {\n initPromiseRef();\n isManual.current = true;\n if (!solanaPromiseRef.current) {\n return;\n }\n if (!solanaWallet) {\n setModalVisible(true);\n selectModalVisibleRef.current = true;\n } else {\n solanaPromiseRef.current.walletSelectResolve(solanaWallet);\n if (!publicKey) {\n try {\n await solanaConnect();\n } catch (e) {\n solanaPromiseRef.current.connectReject(e);\n }\n } else {\n solanaPromiseRef.current.connectResolve({\n userAddress: publicKey.toBase58(),\n signMessage,\n signTransaction,\n sendTransaction,\n });\n }\n }\n\n console.log(\"-- connect fn\", solanaWallet, publicKey);\n return Promise.all([\n solanaPromiseRef.current.walletSelect,\n solanaPromiseRef.current.connect,\n ])\n .then(\n ([\n wallet,\n { userAddress, signMessage, signTransaction, sendTransaction },\n ]) => {\n // console.log('-- connect sol res',{\n // wallet,\n // userAddress, signMessage, sendTransaction\n // });\n const tempWallet = {\n label: wallet.adapter.name,\n icon: \"\",\n provider: {\n rpcUrl: endpoint,\n network: network,\n signMessage: signMessage,\n signTransaction,\n sendTransaction,\n },\n accounts: [\n {\n address: userAddress,\n },\n ],\n chains: [\n {\n id: SolanaChains.get(network)!,\n namespace: ChainNamespace.solana,\n },\n ],\n };\n if (wallet.adapter.name === \"Ledger\") {\n setLedgerAddress(userAddress);\n }\n setWallet(tempWallet);\n setConnected(true);\n return [tempWallet];\n },\n )\n .catch((e) => {\n console.log(\"connect solana error\", e);\n handleSolanaError(e);\n return Promise.reject(e);\n })\n .finally(() => {\n isManual.current = false;\n });\n };\n\n const disconnect = async () => {\n console.log(\"--- discconnect sol\");\n await solanaDisconnect();\n setWallet(null);\n setConnected(false);\n return [];\n };\n\n const connectedChain = useMemo(() => {\n if (!publicKey) {\n return null;\n }\n return {\n id:\n network === WalletAdapterNetwork.Mainnet\n ? SolanaChainIdEnum.MAINNET\n : SolanaChainIdEnum.DEVNET,\n namespace: ChainNamespace.solana,\n };\n }, [publicKey]);\n\n useEffect(() => {\n if (selectModalVisibleRef.current) {\n if (!visible && !solanaWallet && solanaPromiseRef.current) {\n console.log(\n \"-- select modal visible ref\",\n selectModalVisibleRef.current,\n );\n console.log(\"-- use reject solana select modal\");\n solanaPromiseRef.current.walletSelectReject(\"user reject\");\n selectModalVisibleRef.current = false;\n } else if (solanaWallet) {\n selectModalVisibleRef.current = false;\n }\n }\n }, [\n visible,\n solanaWallet,\n solanaPromiseRef.current,\n selectModalVisibleRef.current,\n ]);\n\n useEffect(() => {\n if (!solanaWallet || !publicKey) {\n console.log(\"--- not connect sol\", solanaWallet, publicKey);\n setConnected(false);\n return;\n }\n console.log(\"-- publick\", {\n publicKey: publicKey.toBase58(),\n isManual: isManual.current,\n });\n\n if (isManual.current) {\n if (solanaPromiseRef.current) {\n solanaPromiseRef.current.connectResolve({\n userAddress: publicKey?.toBase58(),\n signMessage,\n signTransaction,\n sendTransaction,\n });\n }\n return;\n }\n const userAddress = publicKey.toBase58();\n setWallet({\n label: solanaWallet.adapter.name,\n icon: \"\",\n provider: {\n signMessage: signMessage!,\n signTransaction: signTransaction!,\n sendTransaction: sendTransaction!,\n rpcUrl: endpoint,\n network: network,\n },\n accounts: [\n {\n address: userAddress,\n },\n ],\n chains: [\n {\n id: SolanaChains.get(network)!,\n namespace: ChainNamespace.solana,\n },\n ],\n });\n if (solanaWallet.adapter.name === \"Ledger\") {\n setLedgerAddress(userAddress);\n }\n\n setConnected(true);\n }, [\n publicKey,\n solanaWallet,\n signMessage,\n signTransaction,\n isManual,\n sendTransaction,\n endpoint,\n network,\n ]);\n\n useEffect(() => {\n if (!solanaWallet) {\n return;\n }\n console.log(\"-- public key\", publicKey, { isMobile });\n if (\n isMobile &&\n solanaWallet.readyState === WalletReadyState.Loadable &&\n !isManual.current\n ) {\n solanaDisconnect().then();\n return;\n }\n\n console.log(\"-- solana refresh auto connect\", solanaWallet);\n\n if (solanaPromiseRef.current) {\n solanaPromiseRef.current.walletSelectResolve(solanaWallet);\n }\n }, [\n solanaWallet,\n solanaConnect,\n publicKey,\n solanaDisconnect,\n handleSolanaError,\n isMobile,\n ]);\n\n return {\n connected,\n connect,\n disconnect,\n connecting,\n wallet,\n connectedChain,\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orderly.network/wallet-connector",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.0-alpha.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.mjs",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -25,17 +25,17 @@
|
|
|
25
25
|
"@solana-mobile/wallet-adapter-mobile": "^2.1.4",
|
|
26
26
|
"@solana/web3.js": "^1.95.3",
|
|
27
27
|
"rxjs": "^7.5.5",
|
|
28
|
-
"@orderly.network/hooks": "2.
|
|
29
|
-
"@orderly.network/
|
|
30
|
-
"@orderly.network/
|
|
31
|
-
"@orderly.network/
|
|
32
|
-
"@orderly.network/
|
|
28
|
+
"@orderly.network/hooks": "2.6.0-alpha.0",
|
|
29
|
+
"@orderly.network/types": "2.6.0-alpha.0",
|
|
30
|
+
"@orderly.network/utils": "2.6.0-alpha.0",
|
|
31
|
+
"@orderly.network/ui": "2.6.0-alpha.0",
|
|
32
|
+
"@orderly.network/core": "2.6.0-alpha.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/react": "^18.2.38",
|
|
36
36
|
"react": "^18.2.0",
|
|
37
37
|
"tsup": "^7.1.0",
|
|
38
|
-
"tsconfig": "0.
|
|
38
|
+
"tsconfig": "0.9.0-alpha.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"react": ">=18"
|