@orderly.network/wallet-connector 2.0.1-alpha.3 → 2.0.1-alpha.5

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 CHANGED
@@ -7,6 +7,8 @@ type ConnectorInitOptions = Optional<InitOptions, "apiKey" | "connect" | "wallet
7
7
  type SolanaInitialProps = PropsWithChildren<{
8
8
  network?: WalletAdapterNetwork;
9
9
  endPoint?: string;
10
+ mainnetRpc?: string;
11
+ devnetRpc?: string;
10
12
  wallets?: Adapter[];
11
13
  onError?: (error: WalletError, adapter?: Adapter) => void;
12
14
  }>;
package/dist/index.d.ts CHANGED
@@ -7,6 +7,8 @@ type ConnectorInitOptions = Optional<InitOptions, "apiKey" | "connect" | "wallet
7
7
  type SolanaInitialProps = PropsWithChildren<{
8
8
  network?: WalletAdapterNetwork;
9
9
  endPoint?: string;
10
+ mainnetRpc?: string;
11
+ devnetRpc?: string;
10
12
  wallets?: Adapter[];
11
13
  onError?: (error: WalletError, adapter?: Adapter) => void;
12
14
  }>;
package/dist/index.js CHANGED
@@ -27,8 +27,14 @@ var binanceModule__default = /*#__PURE__*/_interopDefault(binanceModule);
27
27
  function InitSolana({ children, ...props }) {
28
28
  const network = props.network ?? walletAdapterBase.WalletAdapterNetwork.Devnet;
29
29
  const endPoint = React.useMemo(() => {
30
- return props.endPoint ?? web3_js.clusterApiUrl(network);
31
- }, [network]);
30
+ if (network === walletAdapterBase.WalletAdapterNetwork.Mainnet) {
31
+ return props.mainnetRpc ?? web3_js.clusterApiUrl(network);
32
+ }
33
+ if (network === walletAdapterBase.WalletAdapterNetwork.Devnet) {
34
+ return props.devnetRpc ?? web3_js.clusterApiUrl(network);
35
+ }
36
+ return web3_js.clusterApiUrl(network);
37
+ }, [network, props.mainnetRpc, props.devnetRpc]);
32
38
  const mobileWalletNotFoundHanlder = (adapter) => {
33
39
  console.log("-- mobile wallet adapter", adapter);
34
40
  return Promise.reject(new walletAdapterBase.WalletNotReadyError("wallet not ready"));
@@ -169,7 +175,9 @@ function useSOL({ network }) {
169
175
  console.log("solan connect error", e);
170
176
  if (e instanceof walletAdapterBase.WalletNotReadyError) {
171
177
  console.log("-- need toast wallet not ready");
172
- ee.emit("wallet:connect-error", { message: "Please open the wallet app and use the in-app browser." });
178
+ ee.emit("wallet:connect-error", {
179
+ message: "Please open the wallet app and use the in-app browser."
180
+ });
173
181
  }
174
182
  solanaDisconnect().then();
175
183
  };
@@ -246,14 +254,17 @@ function useSOL({ network }) {
246
254
  return null;
247
255
  }
248
256
  return {
249
- id: 901901901,
257
+ id: network === walletAdapterBase.WalletAdapterNetwork.Mainnet ? 900900900 /* MAINNET */ : 901901901 /* DEVNET */,
250
258
  namespace: types.ChainNamespace.solana
251
259
  };
252
260
  }, [publicKey]);
253
261
  React.useEffect(() => {
254
262
  if (selectModalVisibleRef.current) {
255
263
  if (!visible && !solanaWallet && solanaPromiseRef.current) {
256
- console.log("-- select modal visible ref", selectModalVisibleRef.current);
264
+ console.log(
265
+ "-- select modal visible ref",
266
+ selectModalVisibleRef.current
267
+ );
257
268
  console.log("-- use reject solana select modal");
258
269
  solanaPromiseRef.current.walletSelectReject("user reject");
259
270
  selectModalVisibleRef.current = false;
@@ -261,7 +272,12 @@ function useSOL({ network }) {
261
272
  selectModalVisibleRef.current = false;
262
273
  }
263
274
  }
264
- }, [visible, solanaWallet, solanaPromiseRef.current, selectModalVisibleRef.current]);
275
+ }, [
276
+ visible,
277
+ solanaWallet,
278
+ solanaPromiseRef.current,
279
+ selectModalVisibleRef.current
280
+ ]);
265
281
  React.useEffect(() => {
266
282
  if (!solanaWallet || !publicKey) {
267
283
  console.log("--- not connect sol", solanaWallet, publicKey);
@@ -304,14 +320,26 @@ function useSOL({ network }) {
304
320
  ]
305
321
  });
306
322
  setConnected(true);
307
- }, [publicKey, solanaWallet, signMessage, isManual, connection, sendTransaction, network]);
323
+ }, [
324
+ publicKey,
325
+ solanaWallet,
326
+ signMessage,
327
+ isManual,
328
+ connection,
329
+ sendTransaction,
330
+ network
331
+ ]);
308
332
  React.useEffect(() => {
309
333
  if (!publicKey) {
310
334
  return;
311
335
  }
312
- const id = connection.onAccountChange(publicKey, (updatedAccountInfo, context) => {
313
- console.log("--- account change", updatedAccountInfo, context);
314
- }, { commitment: "confirmed" });
336
+ const id = connection.onAccountChange(
337
+ publicKey,
338
+ (updatedAccountInfo, context) => {
339
+ console.log("--- account change", updatedAccountInfo, context);
340
+ },
341
+ { commitment: "confirmed" }
342
+ );
315
343
  return () => {
316
344
  if (id) {
317
345
  connection.removeAccountChangeListener(id).then();
@@ -337,7 +365,14 @@ function useSOL({ network }) {
337
365
  solanaPromiseRef.current.connectReject(e);
338
366
  handleSolanaError(e);
339
367
  });
340
- }, [solanaWallet, solanaConnect, publicKey, solanaDisconnect, handleSolanaError, isMobile]);
368
+ }, [
369
+ solanaWallet,
370
+ solanaConnect,
371
+ publicKey,
372
+ solanaDisconnect,
373
+ handleSolanaError,
374
+ isMobile
375
+ ]);
341
376
  return {
342
377
  connected,
343
378
  connect,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/initSolana.tsx","../src/main.tsx","../src/useSOL.tsx","../src/config.ts","../src/chains.ts","../src/useEvm.tsx","../src/provider.tsx","../src/initEvm.tsx"],"names":["React","useEffect","useRef","useState","ChainNamespace","useMemo","WalletNotReadyError","WalletAdapterNetwork","wallet","signMessage","sendTransaction"],"mappings":"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","sourcesContent":["import React, {useMemo } from \"react\";\nimport { ConnectionProvider, WalletProvider } from \"@solana/wallet-adapter-react\";\nimport { Adapter, WalletAdapterNetwork, WalletError, WalletNotReadyError } from \"@solana/wallet-adapter-base\";\nimport {\n WalletModalProvider\n} from \"@solana/wallet-adapter-react-ui\";\nimport { clusterApiUrl } from \"@solana/web3.js\";\nimport \"@solana/wallet-adapter-react-ui/styles.css\";\nimport {SolanaInitialProps} from \"./types\";\nimport {\n createDefaultAddressSelector,\n createDefaultAuthorizationResultCache, createDefaultWalletNotFoundHandler,\n SolanaMobileWalletAdapter\n} from \"@solana-mobile/wallet-adapter-mobile\";\nimport { PhantomWalletAdapter } from \"@solana/wallet-adapter-wallets\";\nimport { getGlobalObject } from \"@orderly.network/utils\";\n\nexport default function InitSolana({ children, ...props }:SolanaInitialProps) {\n const network =props.network ?? WalletAdapterNetwork.Devnet;\n const endPoint = useMemo(() => {\n return props.endPoint ?? clusterApiUrl(network)\n }, [network]);\n\n const mobileWalletNotFoundHanlder = (adapter: SolanaMobileWalletAdapter) => {\n console.log('-- mobile wallet adapter', adapter);\n\n return Promise.reject(new WalletNotReadyError('wallet not ready'));\n }\n\n\n const handleSolanaError = (error: WalletError, adapter?: Adapter) => {\n console.log('-- solanan error', error);\n console.log('-- solana adapter', adapter);\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\n\n return 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 }, [props.wallets, network]);\n\n return (\n <ConnectionProvider endpoint={endPoint}>\n <WalletProvider wallets={wallets} onError={props.onError ?? handleSolanaError}>\n <WalletModalProvider className='oui-pointer-events-auto'>\n\n {children}\n </WalletModalProvider>\n </WalletProvider>\n </ConnectionProvider>\n );\n}\n","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({ network: props.solanaNetwork });\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 React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useConnection, useWallet } from \"@solana/wallet-adapter-react\";\nimport { useWalletModal } from \"@solana/wallet-adapter-react-ui\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport {useScreen} from '@orderly.network/ui';\nimport { useEventEmitter, WalletState } from \"@orderly.network/hooks\";\nimport { WalletAdapterNetwork, WalletNotReadyError, WalletReadyState } from \"@solana/wallet-adapter-base\";\nimport { SolanaChains } from \"./config\";\n\n\n\nexport function useSOL({network}: {network: WalletAdapterNetwork}) {\n const [wallet, setWallet] = useState<WalletState| null>(null);\n const {isMobile} = useScreen();\n const { connection } = useConnection();\n const { setVisible: setModalVisible, visible } = useWalletModal();\n const {\n signMessage,\n sendTransaction,\n publicKey,\n wallet: solanaWallet,\n connect: solanaConnect,\n disconnect: solanaDisconnect,\n connecting,\n } = useWallet();\n\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 console.log('-- need toast wallet not ready');\n ee.emit('wallet:connect-error', {message: 'Please open the wallet app and use the in-app browser.'});\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 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(([wallet, {userAddress, signMessage, sendTransaction}]) => {\n // console.log('-- connect sol res',{\n // wallet,\n // userAddress, signMessage, sendTransaction\n // });\n const tempWallet = {\n\n label:wallet.adapter.name,\n icon: \"\",\n provider: {\n signMessage: signMessage,\n connection,\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 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: 901901901,\n namespace: ChainNamespace.solana,\n }\n\n\n }, [publicKey]);\n\n\n\n \n useEffect(() => {\n\n if (selectModalVisibleRef.current) {\n if (\n !visible &&\n !solanaWallet&&\n solanaPromiseRef.current\n ) {\n console.log('-- select modal visible ref', selectModalVisibleRef.current);\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,solanaWallet, solanaPromiseRef.current, 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\n\n if (isManual.current) {\n if (solanaPromiseRef.current) {\n solanaPromiseRef.current.connectResolve({\n userAddress: publicKey?.toBase58(),\n signMessage,\n sendTransaction,\n });\n }\n return;\n }\n console.log(\"-- tt\");\n setWallet({\n label: solanaWallet.adapter.name,\n icon: \"\",\n provider: {\n signMessage: signMessage,\n connection,\n sendTransaction,\n },\n accounts: [\n {\n address: publicKey.toBase58(),\n },\n ],\n chains: [\n {\n id: SolanaChains.get(network)!,\n namespace: ChainNamespace.solana,\n },\n ],\n });\n setConnected(true);\n }, [publicKey, solanaWallet, signMessage, isManual, connection, sendTransaction, network]);\n\n useEffect(() => {\n if (!publicKey) {\n return;\n }\n const id = connection.onAccountChange(publicKey, (updatedAccountInfo, context) => {\n console.log('--- account change', updatedAccountInfo, context);\n\n }, {commitment: 'confirmed'})\n\n return () => {\n if (id) {\n\n connection.removeAccountChangeListener(id).then();\n }\n\n }\n\n }, [connection, publicKey])\n\n useEffect(() => {\n if (!solanaWallet) {\n return;\n }\n console.log('-- public key', publicKey, {isMobile});\n if (isMobile && solanaWallet.readyState === WalletReadyState.Loadable && !isManual.current) {\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 solanaConnect()\n .then((res) => {\n console.log(\"-- connect res\", res);\n })\n .catch((e) => {\n solanaPromiseRef.current.connectReject(e);\n handleSolanaError(e);\n });\n }, [solanaWallet, solanaConnect, publicKey, solanaDisconnect, handleSolanaError, isMobile]);\n\n\n return {\n connected,\n connect,\n disconnect,\n connecting,\n wallet,\n connectedChain,\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 { getChainsArray } from \"./chains\";\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: getChainsArray(),\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 const SolanaChains = new Map([[WalletAdapterNetwork.Devnet, 901901901], [WalletAdapterNetwork.Mainnet, 900900900]]);\n\n","import { chainsInfoMap } from \"@orderly.network/types\";\n\nexport interface NetworkInterface {\n name: string;\n logo: string;\n chainId: string;\n label: string;\n token: string;\n requestRpc: string;\n explorerUrls: string[];\n}\n\nexport const getChainsArray = () => {\n return Array.from(chainsInfoMap.values()).map((chain) => {\n return {\n id: chain.chainInfo.chainId,\n token: chain.chainInfo.nativeCurrency.symbol,\n label: chain.chainInfo.chainName,\n rpcUrl: chain.chainInfo.rpcUrls[0],\n blockExplorerUrl: chain.chainInfo.blockExplorerUrls[0],\n };\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 InitSolana from \"./initSolana\";\nimport { 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\";\n\nexport interface WalletConnectorProviderProps {\n solanaInitial?: SolanaInitialProps;\n evmInitial?: EvmInitialProps;\n}\n\nexport function WalletConnectorProvider(\n props: PropsWithChildren<WalletConnectorProviderProps>\n) {\n return (\n <InitSolana {...(props.solanaInitial ?? {})}>\n <InitEvm {...(props.evmInitial ?? {})}>\n <Main solanaNetwork={props.solanaInitial?.network ?? WalletAdapterNetwork.Devnet}>{props.children}</Main>\n </InitEvm>\n </InitSolana>\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\";\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 onboardAPI = initConfig(props.apiKey, props.options as InitOptions);\n register(\"onboardAPI\", onboardAPI);\n setInitialized(true);\n }, []);\n\n if (!initialized) return null;\n\n return props.children\n}\n"]}
1
+ {"version":3,"sources":["../src/initSolana.tsx","../src/main.tsx","../src/useSOL.tsx","../src/config.ts","../src/chains.ts","../src/useEvm.tsx","../src/provider.tsx","../src/initEvm.tsx"],"names":["React","useEffect","useRef","useState","ChainNamespace","useMemo","WalletAdapterNetwork","WalletNotReadyError","wallet","signMessage","sendTransaction"],"mappings":"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","sourcesContent":["import React, {useMemo } from \"react\";\nimport { ConnectionProvider, WalletProvider } from \"@solana/wallet-adapter-react\";\nimport { Adapter, WalletAdapterNetwork, WalletError, WalletNotReadyError } from \"@solana/wallet-adapter-base\";\nimport {\n WalletModalProvider\n} from \"@solana/wallet-adapter-react-ui\";\nimport { clusterApiUrl } from \"@solana/web3.js\";\nimport \"@solana/wallet-adapter-react-ui/styles.css\";\nimport {SolanaInitialProps} from \"./types\";\nimport {\n createDefaultAddressSelector,\n createDefaultAuthorizationResultCache, createDefaultWalletNotFoundHandler,\n SolanaMobileWalletAdapter\n} from \"@solana-mobile/wallet-adapter-mobile\";\nimport { PhantomWalletAdapter } from \"@solana/wallet-adapter-wallets\";\nimport { getGlobalObject } from \"@orderly.network/utils\";\n\nexport default function InitSolana({ children, ...props }:SolanaInitialProps) {\n const network =props.network ?? WalletAdapterNetwork.Devnet;\n const endPoint = useMemo(() => {\n if (network === WalletAdapterNetwork.Mainnet) {\n // return 'https://rpc.ankr.com/solana';\n return props.mainnetRpc ?? clusterApiUrl(network);\n // return 'https://svc.blockdaemon.com/solana/mainnet/native?apiKey=zpka_417399a60de542759adf31a42a30e60e_61763d0a'\n }\n if (network === WalletAdapterNetwork.Devnet) {\n return props.devnetRpc ?? clusterApiUrl(network);\n }\n return clusterApiUrl(network);\n }, [network, props.mainnetRpc, props.devnetRpc]);\n\n const mobileWalletNotFoundHanlder = (adapter: SolanaMobileWalletAdapter) => {\n console.log('-- mobile wallet adapter', adapter);\n\n return Promise.reject(new WalletNotReadyError('wallet not ready'));\n }\n\n\n const handleSolanaError = (error: WalletError, adapter?: Adapter) => {\n console.log('-- solanan error', error);\n console.log('-- solana adapter', adapter);\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\n\n return 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 }, [props.wallets, network]);\n\n return (\n <ConnectionProvider endpoint={endPoint}>\n <WalletProvider wallets={wallets} onError={props.onError ?? handleSolanaError}>\n <WalletModalProvider className='oui-pointer-events-auto'>\n\n {children}\n </WalletModalProvider>\n </WalletProvider>\n </ConnectionProvider>\n );\n}\n","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({ network: props.solanaNetwork });\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 { useConnection, useWallet } from \"@solana/wallet-adapter-react\";\nimport { useWalletModal } from \"@solana/wallet-adapter-react-ui\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { useEventEmitter, WalletState } from \"@orderly.network/hooks\";\nimport {\n WalletAdapterNetwork,\n WalletNotReadyError,\n WalletReadyState,\n} from \"@solana/wallet-adapter-base\";\nimport { SolanaChainIdEnum, SolanaChains } from \"./config\";\n\nexport function useSOL({ network }: { network: WalletAdapterNetwork }) {\n const [wallet, setWallet] = useState<WalletState | null>(null);\n const { isMobile } = useScreen();\n const { connection } = useConnection();\n const { setVisible: setModalVisible, visible } = useWalletModal();\n const {\n signMessage,\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 console.log(\"-- need toast wallet not ready\");\n ee.emit(\"wallet:connect-error\", {\n message: \"Please open the wallet app and use the in-app browser.\",\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 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(([wallet, { userAddress, signMessage, sendTransaction }]) => {\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 signMessage: signMessage,\n connection,\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 setWallet(tempWallet);\n setConnected(true);\n return [tempWallet];\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 sendTransaction,\n });\n }\n return;\n }\n console.log(\"-- tt\");\n setWallet({\n label: solanaWallet.adapter.name,\n icon: \"\",\n provider: {\n signMessage: signMessage,\n connection,\n sendTransaction,\n },\n accounts: [\n {\n address: publicKey.toBase58(),\n },\n ],\n chains: [\n {\n id: SolanaChains.get(network)!,\n namespace: ChainNamespace.solana,\n },\n ],\n });\n setConnected(true);\n }, [\n publicKey,\n solanaWallet,\n signMessage,\n isManual,\n connection,\n sendTransaction,\n network,\n ]);\n\n useEffect(() => {\n if (!publicKey) {\n return;\n }\n const id = connection.onAccountChange(\n publicKey,\n (updatedAccountInfo, context) => {\n console.log(\"--- account change\", updatedAccountInfo, context);\n },\n { commitment: \"confirmed\" }\n );\n\n return () => {\n if (id) {\n connection.removeAccountChangeListener(id).then();\n }\n };\n }, [connection, publicKey]);\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 solanaConnect()\n .then((res) => {\n console.log(\"-- connect res\", res);\n })\n .catch((e) => {\n solanaPromiseRef.current.connectReject(e);\n handleSolanaError(e);\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 injectedModule from \"@web3-onboard/injected-wallets\";\nimport { init } from \"@web3-onboard/react\";\nimport type { InitOptions, OnboardAPI } from \"@web3-onboard/core\";\nimport { getChainsArray } from \"./chains\";\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: getChainsArray(),\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 { chainsInfoMap } from \"@orderly.network/types\";\n\nexport interface NetworkInterface {\n name: string;\n logo: string;\n chainId: string;\n label: string;\n token: string;\n requestRpc: string;\n explorerUrls: string[];\n}\n\nexport const getChainsArray = () => {\n return Array.from(chainsInfoMap.values()).map((chain) => {\n return {\n id: chain.chainInfo.chainId,\n token: chain.chainInfo.nativeCurrency.symbol,\n label: chain.chainInfo.chainName,\n rpcUrl: chain.chainInfo.rpcUrls[0],\n blockExplorerUrl: chain.chainInfo.blockExplorerUrls[0],\n };\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 InitSolana from \"./initSolana\";\nimport { 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\";\n\nexport interface WalletConnectorProviderProps {\n solanaInitial?: SolanaInitialProps;\n evmInitial?: EvmInitialProps;\n}\n\nexport function WalletConnectorProvider(\n props: PropsWithChildren<WalletConnectorProviderProps>\n) {\n return (\n <InitSolana {...(props.solanaInitial ?? {})}>\n <InitEvm {...(props.evmInitial ?? {})}>\n <Main solanaNetwork={props.solanaInitial?.network ?? WalletAdapterNetwork.Devnet}>{props.children}</Main>\n </InitEvm>\n </InitSolana>\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\";\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 onboardAPI = initConfig(props.apiKey, props.options as InitOptions);\n register(\"onboardAPI\", onboardAPI);\n setInitialized(true);\n }, []);\n\n if (!initialized) return null;\n\n return props.children\n}\n"]}
package/dist/index.mjs CHANGED
@@ -19,8 +19,14 @@ import { merge } from 'lodash';
19
19
  function InitSolana({ children, ...props }) {
20
20
  const network = props.network ?? WalletAdapterNetwork.Devnet;
21
21
  const endPoint = useMemo(() => {
22
- return props.endPoint ?? clusterApiUrl(network);
23
- }, [network]);
22
+ if (network === WalletAdapterNetwork.Mainnet) {
23
+ return props.mainnetRpc ?? clusterApiUrl(network);
24
+ }
25
+ if (network === WalletAdapterNetwork.Devnet) {
26
+ return props.devnetRpc ?? clusterApiUrl(network);
27
+ }
28
+ return clusterApiUrl(network);
29
+ }, [network, props.mainnetRpc, props.devnetRpc]);
24
30
  const mobileWalletNotFoundHanlder = (adapter) => {
25
31
  console.log("-- mobile wallet adapter", adapter);
26
32
  return Promise.reject(new WalletNotReadyError("wallet not ready"));
@@ -161,7 +167,9 @@ function useSOL({ network }) {
161
167
  console.log("solan connect error", e);
162
168
  if (e instanceof WalletNotReadyError) {
163
169
  console.log("-- need toast wallet not ready");
164
- ee.emit("wallet:connect-error", { message: "Please open the wallet app and use the in-app browser." });
170
+ ee.emit("wallet:connect-error", {
171
+ message: "Please open the wallet app and use the in-app browser."
172
+ });
165
173
  }
166
174
  solanaDisconnect().then();
167
175
  };
@@ -238,14 +246,17 @@ function useSOL({ network }) {
238
246
  return null;
239
247
  }
240
248
  return {
241
- id: 901901901,
249
+ id: network === WalletAdapterNetwork.Mainnet ? 900900900 /* MAINNET */ : 901901901 /* DEVNET */,
242
250
  namespace: ChainNamespace.solana
243
251
  };
244
252
  }, [publicKey]);
245
253
  useEffect(() => {
246
254
  if (selectModalVisibleRef.current) {
247
255
  if (!visible && !solanaWallet && solanaPromiseRef.current) {
248
- console.log("-- select modal visible ref", selectModalVisibleRef.current);
256
+ console.log(
257
+ "-- select modal visible ref",
258
+ selectModalVisibleRef.current
259
+ );
249
260
  console.log("-- use reject solana select modal");
250
261
  solanaPromiseRef.current.walletSelectReject("user reject");
251
262
  selectModalVisibleRef.current = false;
@@ -253,7 +264,12 @@ function useSOL({ network }) {
253
264
  selectModalVisibleRef.current = false;
254
265
  }
255
266
  }
256
- }, [visible, solanaWallet, solanaPromiseRef.current, selectModalVisibleRef.current]);
267
+ }, [
268
+ visible,
269
+ solanaWallet,
270
+ solanaPromiseRef.current,
271
+ selectModalVisibleRef.current
272
+ ]);
257
273
  useEffect(() => {
258
274
  if (!solanaWallet || !publicKey) {
259
275
  console.log("--- not connect sol", solanaWallet, publicKey);
@@ -296,14 +312,26 @@ function useSOL({ network }) {
296
312
  ]
297
313
  });
298
314
  setConnected(true);
299
- }, [publicKey, solanaWallet, signMessage, isManual, connection, sendTransaction, network]);
315
+ }, [
316
+ publicKey,
317
+ solanaWallet,
318
+ signMessage,
319
+ isManual,
320
+ connection,
321
+ sendTransaction,
322
+ network
323
+ ]);
300
324
  useEffect(() => {
301
325
  if (!publicKey) {
302
326
  return;
303
327
  }
304
- const id = connection.onAccountChange(publicKey, (updatedAccountInfo, context) => {
305
- console.log("--- account change", updatedAccountInfo, context);
306
- }, { commitment: "confirmed" });
328
+ const id = connection.onAccountChange(
329
+ publicKey,
330
+ (updatedAccountInfo, context) => {
331
+ console.log("--- account change", updatedAccountInfo, context);
332
+ },
333
+ { commitment: "confirmed" }
334
+ );
307
335
  return () => {
308
336
  if (id) {
309
337
  connection.removeAccountChangeListener(id).then();
@@ -329,7 +357,14 @@ function useSOL({ network }) {
329
357
  solanaPromiseRef.current.connectReject(e);
330
358
  handleSolanaError(e);
331
359
  });
332
- }, [solanaWallet, solanaConnect, publicKey, solanaDisconnect, handleSolanaError, isMobile]);
360
+ }, [
361
+ solanaWallet,
362
+ solanaConnect,
363
+ publicKey,
364
+ solanaDisconnect,
365
+ handleSolanaError,
366
+ isMobile
367
+ ]);
333
368
  return {
334
369
  connected,
335
370
  connect,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/initSolana.tsx","../src/main.tsx","../src/useSOL.tsx","../src/config.ts","../src/chains.ts","../src/useEvm.tsx","../src/provider.tsx","../src/initEvm.tsx"],"names":["React","useEffect","useRef","useState","ChainNamespace","useMemo","WalletNotReadyError","WalletAdapterNetwork","wallet","signMessage","sendTransaction"],"mappings":"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","sourcesContent":["import React, {useMemo } from \"react\";\nimport { ConnectionProvider, WalletProvider } from \"@solana/wallet-adapter-react\";\nimport { Adapter, WalletAdapterNetwork, WalletError, WalletNotReadyError } from \"@solana/wallet-adapter-base\";\nimport {\n WalletModalProvider\n} from \"@solana/wallet-adapter-react-ui\";\nimport { clusterApiUrl } from \"@solana/web3.js\";\nimport \"@solana/wallet-adapter-react-ui/styles.css\";\nimport {SolanaInitialProps} from \"./types\";\nimport {\n createDefaultAddressSelector,\n createDefaultAuthorizationResultCache, createDefaultWalletNotFoundHandler,\n SolanaMobileWalletAdapter\n} from \"@solana-mobile/wallet-adapter-mobile\";\nimport { PhantomWalletAdapter } from \"@solana/wallet-adapter-wallets\";\nimport { getGlobalObject } from \"@orderly.network/utils\";\n\nexport default function InitSolana({ children, ...props }:SolanaInitialProps) {\n const network =props.network ?? WalletAdapterNetwork.Devnet;\n const endPoint = useMemo(() => {\n return props.endPoint ?? clusterApiUrl(network)\n }, [network]);\n\n const mobileWalletNotFoundHanlder = (adapter: SolanaMobileWalletAdapter) => {\n console.log('-- mobile wallet adapter', adapter);\n\n return Promise.reject(new WalletNotReadyError('wallet not ready'));\n }\n\n\n const handleSolanaError = (error: WalletError, adapter?: Adapter) => {\n console.log('-- solanan error', error);\n console.log('-- solana adapter', adapter);\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\n\n return 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 }, [props.wallets, network]);\n\n return (\n <ConnectionProvider endpoint={endPoint}>\n <WalletProvider wallets={wallets} onError={props.onError ?? handleSolanaError}>\n <WalletModalProvider className='oui-pointer-events-auto'>\n\n {children}\n </WalletModalProvider>\n </WalletProvider>\n </ConnectionProvider>\n );\n}\n","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({ network: props.solanaNetwork });\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 React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useConnection, useWallet } from \"@solana/wallet-adapter-react\";\nimport { useWalletModal } from \"@solana/wallet-adapter-react-ui\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport {useScreen} from '@orderly.network/ui';\nimport { useEventEmitter, WalletState } from \"@orderly.network/hooks\";\nimport { WalletAdapterNetwork, WalletNotReadyError, WalletReadyState } from \"@solana/wallet-adapter-base\";\nimport { SolanaChains } from \"./config\";\n\n\n\nexport function useSOL({network}: {network: WalletAdapterNetwork}) {\n const [wallet, setWallet] = useState<WalletState| null>(null);\n const {isMobile} = useScreen();\n const { connection } = useConnection();\n const { setVisible: setModalVisible, visible } = useWalletModal();\n const {\n signMessage,\n sendTransaction,\n publicKey,\n wallet: solanaWallet,\n connect: solanaConnect,\n disconnect: solanaDisconnect,\n connecting,\n } = useWallet();\n\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 console.log('-- need toast wallet not ready');\n ee.emit('wallet:connect-error', {message: 'Please open the wallet app and use the in-app browser.'});\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 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(([wallet, {userAddress, signMessage, sendTransaction}]) => {\n // console.log('-- connect sol res',{\n // wallet,\n // userAddress, signMessage, sendTransaction\n // });\n const tempWallet = {\n\n label:wallet.adapter.name,\n icon: \"\",\n provider: {\n signMessage: signMessage,\n connection,\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 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: 901901901,\n namespace: ChainNamespace.solana,\n }\n\n\n }, [publicKey]);\n\n\n\n \n useEffect(() => {\n\n if (selectModalVisibleRef.current) {\n if (\n !visible &&\n !solanaWallet&&\n solanaPromiseRef.current\n ) {\n console.log('-- select modal visible ref', selectModalVisibleRef.current);\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,solanaWallet, solanaPromiseRef.current, 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\n\n if (isManual.current) {\n if (solanaPromiseRef.current) {\n solanaPromiseRef.current.connectResolve({\n userAddress: publicKey?.toBase58(),\n signMessage,\n sendTransaction,\n });\n }\n return;\n }\n console.log(\"-- tt\");\n setWallet({\n label: solanaWallet.adapter.name,\n icon: \"\",\n provider: {\n signMessage: signMessage,\n connection,\n sendTransaction,\n },\n accounts: [\n {\n address: publicKey.toBase58(),\n },\n ],\n chains: [\n {\n id: SolanaChains.get(network)!,\n namespace: ChainNamespace.solana,\n },\n ],\n });\n setConnected(true);\n }, [publicKey, solanaWallet, signMessage, isManual, connection, sendTransaction, network]);\n\n useEffect(() => {\n if (!publicKey) {\n return;\n }\n const id = connection.onAccountChange(publicKey, (updatedAccountInfo, context) => {\n console.log('--- account change', updatedAccountInfo, context);\n\n }, {commitment: 'confirmed'})\n\n return () => {\n if (id) {\n\n connection.removeAccountChangeListener(id).then();\n }\n\n }\n\n }, [connection, publicKey])\n\n useEffect(() => {\n if (!solanaWallet) {\n return;\n }\n console.log('-- public key', publicKey, {isMobile});\n if (isMobile && solanaWallet.readyState === WalletReadyState.Loadable && !isManual.current) {\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 solanaConnect()\n .then((res) => {\n console.log(\"-- connect res\", res);\n })\n .catch((e) => {\n solanaPromiseRef.current.connectReject(e);\n handleSolanaError(e);\n });\n }, [solanaWallet, solanaConnect, publicKey, solanaDisconnect, handleSolanaError, isMobile]);\n\n\n return {\n connected,\n connect,\n disconnect,\n connecting,\n wallet,\n connectedChain,\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 { getChainsArray } from \"./chains\";\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: getChainsArray(),\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 const SolanaChains = new Map([[WalletAdapterNetwork.Devnet, 901901901], [WalletAdapterNetwork.Mainnet, 900900900]]);\n\n","import { chainsInfoMap } from \"@orderly.network/types\";\n\nexport interface NetworkInterface {\n name: string;\n logo: string;\n chainId: string;\n label: string;\n token: string;\n requestRpc: string;\n explorerUrls: string[];\n}\n\nexport const getChainsArray = () => {\n return Array.from(chainsInfoMap.values()).map((chain) => {\n return {\n id: chain.chainInfo.chainId,\n token: chain.chainInfo.nativeCurrency.symbol,\n label: chain.chainInfo.chainName,\n rpcUrl: chain.chainInfo.rpcUrls[0],\n blockExplorerUrl: chain.chainInfo.blockExplorerUrls[0],\n };\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 InitSolana from \"./initSolana\";\nimport { 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\";\n\nexport interface WalletConnectorProviderProps {\n solanaInitial?: SolanaInitialProps;\n evmInitial?: EvmInitialProps;\n}\n\nexport function WalletConnectorProvider(\n props: PropsWithChildren<WalletConnectorProviderProps>\n) {\n return (\n <InitSolana {...(props.solanaInitial ?? {})}>\n <InitEvm {...(props.evmInitial ?? {})}>\n <Main solanaNetwork={props.solanaInitial?.network ?? WalletAdapterNetwork.Devnet}>{props.children}</Main>\n </InitEvm>\n </InitSolana>\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\";\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 onboardAPI = initConfig(props.apiKey, props.options as InitOptions);\n register(\"onboardAPI\", onboardAPI);\n setInitialized(true);\n }, []);\n\n if (!initialized) return null;\n\n return props.children\n}\n"]}
1
+ {"version":3,"sources":["../src/initSolana.tsx","../src/main.tsx","../src/useSOL.tsx","../src/config.ts","../src/chains.ts","../src/useEvm.tsx","../src/provider.tsx","../src/initEvm.tsx"],"names":["React","useEffect","useRef","useState","ChainNamespace","useMemo","WalletAdapterNetwork","WalletNotReadyError","wallet","signMessage","sendTransaction"],"mappings":"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","sourcesContent":["import React, {useMemo } from \"react\";\nimport { ConnectionProvider, WalletProvider } from \"@solana/wallet-adapter-react\";\nimport { Adapter, WalletAdapterNetwork, WalletError, WalletNotReadyError } from \"@solana/wallet-adapter-base\";\nimport {\n WalletModalProvider\n} from \"@solana/wallet-adapter-react-ui\";\nimport { clusterApiUrl } from \"@solana/web3.js\";\nimport \"@solana/wallet-adapter-react-ui/styles.css\";\nimport {SolanaInitialProps} from \"./types\";\nimport {\n createDefaultAddressSelector,\n createDefaultAuthorizationResultCache, createDefaultWalletNotFoundHandler,\n SolanaMobileWalletAdapter\n} from \"@solana-mobile/wallet-adapter-mobile\";\nimport { PhantomWalletAdapter } from \"@solana/wallet-adapter-wallets\";\nimport { getGlobalObject } from \"@orderly.network/utils\";\n\nexport default function InitSolana({ children, ...props }:SolanaInitialProps) {\n const network =props.network ?? WalletAdapterNetwork.Devnet;\n const endPoint = useMemo(() => {\n if (network === WalletAdapterNetwork.Mainnet) {\n // return 'https://rpc.ankr.com/solana';\n return props.mainnetRpc ?? clusterApiUrl(network);\n // return 'https://svc.blockdaemon.com/solana/mainnet/native?apiKey=zpka_417399a60de542759adf31a42a30e60e_61763d0a'\n }\n if (network === WalletAdapterNetwork.Devnet) {\n return props.devnetRpc ?? clusterApiUrl(network);\n }\n return clusterApiUrl(network);\n }, [network, props.mainnetRpc, props.devnetRpc]);\n\n const mobileWalletNotFoundHanlder = (adapter: SolanaMobileWalletAdapter) => {\n console.log('-- mobile wallet adapter', adapter);\n\n return Promise.reject(new WalletNotReadyError('wallet not ready'));\n }\n\n\n const handleSolanaError = (error: WalletError, adapter?: Adapter) => {\n console.log('-- solanan error', error);\n console.log('-- solana adapter', adapter);\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\n\n return 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 }, [props.wallets, network]);\n\n return (\n <ConnectionProvider endpoint={endPoint}>\n <WalletProvider wallets={wallets} onError={props.onError ?? handleSolanaError}>\n <WalletModalProvider className='oui-pointer-events-auto'>\n\n {children}\n </WalletModalProvider>\n </WalletProvider>\n </ConnectionProvider>\n );\n}\n","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({ network: props.solanaNetwork });\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 { useConnection, useWallet } from \"@solana/wallet-adapter-react\";\nimport { useWalletModal } from \"@solana/wallet-adapter-react-ui\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { useEventEmitter, WalletState } from \"@orderly.network/hooks\";\nimport {\n WalletAdapterNetwork,\n WalletNotReadyError,\n WalletReadyState,\n} from \"@solana/wallet-adapter-base\";\nimport { SolanaChainIdEnum, SolanaChains } from \"./config\";\n\nexport function useSOL({ network }: { network: WalletAdapterNetwork }) {\n const [wallet, setWallet] = useState<WalletState | null>(null);\n const { isMobile } = useScreen();\n const { connection } = useConnection();\n const { setVisible: setModalVisible, visible } = useWalletModal();\n const {\n signMessage,\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 console.log(\"-- need toast wallet not ready\");\n ee.emit(\"wallet:connect-error\", {\n message: \"Please open the wallet app and use the in-app browser.\",\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 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(([wallet, { userAddress, signMessage, sendTransaction }]) => {\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 signMessage: signMessage,\n connection,\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 setWallet(tempWallet);\n setConnected(true);\n return [tempWallet];\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 sendTransaction,\n });\n }\n return;\n }\n console.log(\"-- tt\");\n setWallet({\n label: solanaWallet.adapter.name,\n icon: \"\",\n provider: {\n signMessage: signMessage,\n connection,\n sendTransaction,\n },\n accounts: [\n {\n address: publicKey.toBase58(),\n },\n ],\n chains: [\n {\n id: SolanaChains.get(network)!,\n namespace: ChainNamespace.solana,\n },\n ],\n });\n setConnected(true);\n }, [\n publicKey,\n solanaWallet,\n signMessage,\n isManual,\n connection,\n sendTransaction,\n network,\n ]);\n\n useEffect(() => {\n if (!publicKey) {\n return;\n }\n const id = connection.onAccountChange(\n publicKey,\n (updatedAccountInfo, context) => {\n console.log(\"--- account change\", updatedAccountInfo, context);\n },\n { commitment: \"confirmed\" }\n );\n\n return () => {\n if (id) {\n connection.removeAccountChangeListener(id).then();\n }\n };\n }, [connection, publicKey]);\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 solanaConnect()\n .then((res) => {\n console.log(\"-- connect res\", res);\n })\n .catch((e) => {\n solanaPromiseRef.current.connectReject(e);\n handleSolanaError(e);\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 injectedModule from \"@web3-onboard/injected-wallets\";\nimport { init } from \"@web3-onboard/react\";\nimport type { InitOptions, OnboardAPI } from \"@web3-onboard/core\";\nimport { getChainsArray } from \"./chains\";\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: getChainsArray(),\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 { chainsInfoMap } from \"@orderly.network/types\";\n\nexport interface NetworkInterface {\n name: string;\n logo: string;\n chainId: string;\n label: string;\n token: string;\n requestRpc: string;\n explorerUrls: string[];\n}\n\nexport const getChainsArray = () => {\n return Array.from(chainsInfoMap.values()).map((chain) => {\n return {\n id: chain.chainInfo.chainId,\n token: chain.chainInfo.nativeCurrency.symbol,\n label: chain.chainInfo.chainName,\n rpcUrl: chain.chainInfo.rpcUrls[0],\n blockExplorerUrl: chain.chainInfo.blockExplorerUrls[0],\n };\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 InitSolana from \"./initSolana\";\nimport { 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\";\n\nexport interface WalletConnectorProviderProps {\n solanaInitial?: SolanaInitialProps;\n evmInitial?: EvmInitialProps;\n}\n\nexport function WalletConnectorProvider(\n props: PropsWithChildren<WalletConnectorProviderProps>\n) {\n return (\n <InitSolana {...(props.solanaInitial ?? {})}>\n <InitEvm {...(props.evmInitial ?? {})}>\n <Main solanaNetwork={props.solanaInitial?.network ?? WalletAdapterNetwork.Devnet}>{props.children}</Main>\n </InitEvm>\n </InitSolana>\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\";\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 onboardAPI = initConfig(props.apiKey, props.options as InitOptions);\n register(\"onboardAPI\", onboardAPI);\n setInitialized(true);\n }, []);\n\n if (!initialized) return null;\n\n return props.children\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orderly.network/wallet-connector",
3
- "version": "2.0.1-alpha.3",
3
+ "version": "2.0.1-alpha.5",
4
4
  "description": "",
5
5
  "main": "dist/index.mjs",
6
6
  "module": "dist/index.mjs",
@@ -28,11 +28,11 @@
28
28
  "@solana-mobile/wallet-adapter-mobile": "2.1.4",
29
29
  "@solana/web3.js": "1.95.3",
30
30
  "rxjs": "^7.5.5",
31
- "@orderly.network/hooks": "2.0.1-alpha.3",
32
- "@orderly.network/ui": "2.0.1-alpha.3",
33
- "@orderly.network/types": "2.0.1-alpha.3",
34
- "@orderly.network/utils": "2.0.1-alpha.3",
35
- "@orderly.network/core": "2.0.1-alpha.3"
31
+ "@orderly.network/hooks": "2.0.1-alpha.5",
32
+ "@orderly.network/core": "2.0.1-alpha.5",
33
+ "@orderly.network/utils": "2.0.1-alpha.5",
34
+ "@orderly.network/types": "2.0.1-alpha.5",
35
+ "@orderly.network/ui": "2.0.1-alpha.5"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@types/react": "^18.2.38",