@dynamic-labs/multi-wallet 0.17.0-RC.1 → 0.17.0-RC.10
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/CHANGELOG.md +114 -0
- package/package.json +11 -14
- package/src/index.cjs +0 -64
- package/src/index.d.ts +0 -15
- package/src/index.js +1 -20
- package/src/multi-wallet.cjs +45 -155
- package/src/multi-wallet.d.ts +0 -3
- package/src/multi-wallet.js +43 -152
- package/src/types.d.ts +9 -49
- package/src/utils/convertors.cjs +0 -7
- package/src/utils/convertors.d.ts +0 -1
- package/src/utils/convertors.js +1 -7
- package/src/utils/getApiProviders.cjs +15 -0
- package/src/utils/getApiProviders.d.ts +10 -0
- package/src/utils/getApiProviders.js +11 -0
- package/src/utils/message.cjs +3 -4
- package/src/utils/message.d.ts +2 -2
- package/src/utils/message.js +1 -2
- package/src/wallets/constants.cjs +0 -2
- package/src/wallets/constants.js +1 -2
- package/src/wallets/cosmos/KeplrWalletConnect.cjs +21 -21
- package/src/wallets/cosmos/KeplrWalletConnect.d.ts +11 -7
- package/src/wallets/cosmos/KeplrWalletConnect.js +13 -13
- package/src/wallets/cosmos/KeplrWalletConnector.cjs +21 -6
- package/src/wallets/cosmos/KeplrWalletConnector.d.ts +10 -6
- package/src/wallets/cosmos/KeplrWalletConnector.js +21 -6
- package/src/wallets/{clients/walletConnect/walletConnect.cjs → cosmos/wcClient.lib.cjs} +38 -101
- package/src/wallets/{clients/walletConnect/walletConnect.d.ts → cosmos/wcClient.lib.d.ts} +8 -10
- package/src/wallets/{clients/walletConnect/walletConnect.js → cosmos/wcClient.lib.js} +36 -97
- package/src/wallets/flow/FlowWalletConnector.cjs +7 -8
- package/src/wallets/flow/FlowWalletConnector.js +2 -3
- package/src/wallets/flow/lilico.cjs +2 -2
- package/src/wallets/flow/lilico.js +1 -1
- package/src/wallets/starknet/braavos.cjs +2 -2
- package/src/wallets/starknet/braavos.js +1 -1
- package/src/wallets/starknet/starknetWalletConnector.cjs +5 -6
- package/src/wallets/starknet/starknetWalletConnector.js +2 -3
- package/src/wallets/window.d.ts +0 -77
- package/src/errors.cjs +0 -65
- package/src/errors.d.ts +0 -30
- package/src/errors.js +0 -53
- package/src/rpcProviders.cjs +0 -76
- package/src/rpcProviders.d.ts +0 -5
- package/src/rpcProviders.js +0 -69
- package/src/utils/CancellablePromise/CancellablePromise.cjs +0 -33
- package/src/utils/CancellablePromise/CancellablePromise.d.ts +0 -9
- package/src/utils/CancellablePromise/CancellablePromise.js +0 -29
- package/src/utils/CancellablePromise/index.d.ts +0 -1
- package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.cjs +0 -54
- package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.d.ts +0 -3
- package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.js +0 -50
- package/src/utils/assignConfirmationScreenToProvider/index.d.ts +0 -1
- package/src/utils/encoding.cjs +0 -18
- package/src/utils/encoding.d.ts +0 -4
- package/src/utils/encoding.js +0 -12
- package/src/utils/extractNonce.cjs +0 -13
- package/src/utils/extractNonce.d.ts +0 -1
- package/src/utils/extractNonce.js +0 -9
- package/src/utils/getChainInfo/getChainInfo.cjs +0 -59
- package/src/utils/getChainInfo/getChainInfo.d.ts +0 -2
- package/src/utils/getChainInfo/getChainInfo.js +0 -55
- package/src/utils/getChainInfo/index.d.ts +0 -1
- package/src/utils/getWalletConnectorByName.cjs +0 -19
- package/src/utils/getWalletConnectorByName.d.ts +0 -2
- package/src/utils/getWalletConnectorByName.js +0 -15
- package/src/utils/isEmailOTPWalletConnector/index.d.ts +0 -1
- package/src/utils/isEmailOTPWalletConnector/isEmailOTPWalletConnector.cjs +0 -7
- package/src/utils/isEmailOTPWalletConnector/isEmailOTPWalletConnector.d.ts +0 -2
- package/src/utils/isEmailOTPWalletConnector/isEmailOTPWalletConnector.js +0 -3
- package/src/utils/isEmailWalletConnector/index.d.ts +0 -1
- package/src/utils/isEmailWalletConnector/isEmailWalletConnector.cjs +0 -7
- package/src/utils/isEmailWalletConnector/isEmailWalletConnector.d.ts +0 -2
- package/src/utils/isEmailWalletConnector/isEmailWalletConnector.js +0 -3
- package/src/utils/isFunction/index.d.ts +0 -1
- package/src/utils/isFunction/isFunction.cjs +0 -8
- package/src/utils/isFunction/isFunction.d.ts +0 -1
- package/src/utils/isFunction/isFunction.js +0 -4
- package/src/utils/isMobile.cjs +0 -54
- package/src/utils/isMobile.d.ts +0 -13
- package/src/utils/isMobile.js +0 -46
- package/src/utils/isSameAddress/index.d.ts +0 -1
- package/src/utils/isSameAddress/isSameAddress.cjs +0 -9
- package/src/utils/isSameAddress/isSameAddress.d.ts +0 -1
- package/src/utils/isSameAddress/isSameAddress.js +0 -5
- package/src/utils/isSameAddress/utils/index.d.ts +0 -1
- package/src/utils/isSameAddress/utils/normalizeAddress/index.d.ts +0 -1
- package/src/utils/isSameAddress/utils/normalizeAddress/normalizeAddress.cjs +0 -17
- package/src/utils/isSameAddress/utils/normalizeAddress/normalizeAddress.d.ts +0 -1
- package/src/utils/isSameAddress/utils/normalizeAddress/normalizeAddress.js +0 -13
- package/src/utils/isSocialWalletConnector/index.d.ts +0 -1
- package/src/utils/isSocialWalletConnector/isSocialWalletConnector.cjs +0 -7
- package/src/utils/isSocialWalletConnector/isSocialWalletConnector.d.ts +0 -2
- package/src/utils/isSocialWalletConnector/isSocialWalletConnector.js +0 -3
- package/src/utils/isUnsupportedProviderError/index.d.ts +0 -1
- package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.cjs +0 -13
- package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.d.ts +0 -6
- package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.js +0 -9
- package/src/utils/localStorageAsync.cjs +0 -28
- package/src/utils/localStorageAsync.d.ts +0 -3
- package/src/utils/localStorageAsync.js +0 -22
- package/src/utils/logger.cjs +0 -9
- package/src/utils/logger.d.ts +0 -2
- package/src/utils/logger.js +0 -5
- package/src/utils/normalizeWalletName/index.d.ts +0 -1
- package/src/utils/normalizeWalletName/normalizeWalletName.cjs +0 -7
- package/src/utils/normalizeWalletName/normalizeWalletName.d.ts +0 -1
- package/src/utils/normalizeWalletName/normalizeWalletName.js +0 -3
- package/src/utils/shouldLowercaseAddress.cjs +0 -11
- package/src/utils/shouldLowercaseAddress.d.ts +0 -1
- package/src/utils/shouldLowercaseAddress.js +0 -7
- package/src/utils/walletConnect.cjs +0 -30
- package/src/utils/walletConnect.d.ts +0 -4
- package/src/utils/walletConnect.js +0 -26
- package/src/wallets/ProviderLookup.cjs +0 -18
- package/src/wallets/ProviderLookup.d.ts +0 -4
- package/src/wallets/ProviderLookup.js +0 -14
- package/src/wallets/algorand/MyAlgoWalletConnector.cjs +0 -149
- package/src/wallets/algorand/MyAlgoWalletConnector.d.ts +0 -21
- package/src/wallets/algorand/MyAlgoWalletConnector.js +0 -143
- package/src/wallets/algorand/myalgoSigner.cjs +0 -24
- package/src/wallets/algorand/myalgoSigner.d.ts +0 -21
- package/src/wallets/algorand/myalgoSigner.js +0 -20
- package/src/wallets/clients/coinbase/coinbase.cjs +0 -73
- package/src/wallets/clients/coinbase/coinbase.d.ts +0 -6
- package/src/wallets/clients/coinbase/coinbase.js +0 -66
- package/src/wallets/clients/coinbase/index.d.ts +0 -2
- package/src/wallets/clients/coinbase/types.d.ts +0 -14
- package/src/wallets/clients/walletConnect/index.d.ts +0 -1
- package/src/wallets/clients/walletConnect/types.d.ts +0 -4
- package/src/wallets/cosmos/getKeplrConnector.cjs +0 -18
- package/src/wallets/cosmos/getKeplrConnector.d.ts +0 -6
- package/src/wallets/cosmos/getKeplrConnector.js +0 -14
- package/src/wallets/ethereum/BloctoEvm.cjs +0 -111
- package/src/wallets/ethereum/BloctoEvm.d.ts +0 -25
- package/src/wallets/ethereum/BloctoEvm.js +0 -105
- package/src/wallets/ethereum/EthWalletConnector.cjs +0 -191
- package/src/wallets/ethereum/EthWalletConnector.d.ts +0 -35
- package/src/wallets/ethereum/EthWalletConnector.js +0 -187
- package/src/wallets/ethereum/MagicConnector/EmailMagicWalletConnector/EmailMagicWalletConnector.cjs +0 -63
- package/src/wallets/ethereum/MagicConnector/EmailMagicWalletConnector/EmailMagicWalletConnector.d.ts +0 -12
- package/src/wallets/ethereum/MagicConnector/EmailMagicWalletConnector/EmailMagicWalletConnector.js +0 -59
- package/src/wallets/ethereum/MagicConnector/EmailMagicWalletConnector/index.d.ts +0 -1
- package/src/wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/EmailOTPMagicWalletConnector.cjs +0 -62
- package/src/wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/EmailOTPMagicWalletConnector.d.ts +0 -11
- package/src/wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/EmailOTPMagicWalletConnector.js +0 -58
- package/src/wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/index.d.ts +0 -1
- package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.cjs +0 -102
- package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.d.ts +0 -33
- package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.js +0 -98
- package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/index.d.ts +0 -2
- package/src/wallets/ethereum/MagicConnector/MagicSocialWalletConnector/MagicSocialWalletConnector.cjs +0 -55
- package/src/wallets/ethereum/MagicConnector/MagicSocialWalletConnector/MagicSocialWalletConnector.d.ts +0 -12
- package/src/wallets/ethereum/MagicConnector/MagicSocialWalletConnector/MagicSocialWalletConnector.js +0 -51
- package/src/wallets/ethereum/MagicConnector/MagicSocialWalletConnector/index.d.ts +0 -1
- package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.cjs +0 -175
- package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.d.ts +0 -53
- package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.js +0 -171
- package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/index.d.ts +0 -2
- package/src/wallets/ethereum/MagicConnector/index.d.ts +0 -5
- package/src/wallets/ethereum/coinbase.cjs +0 -65
- package/src/wallets/ethereum/coinbase.d.ts +0 -26
- package/src/wallets/ethereum/coinbase.js +0 -63
- package/src/wallets/ethereum/ethProviderHelper.cjs +0 -197
- package/src/wallets/ethereum/ethProviderHelper.d.ts +0 -40
- package/src/wallets/ethereum/ethProviderHelper.js +0 -193
- package/src/wallets/ethereum/evm-network.cjs +0 -20
- package/src/wallets/ethereum/evm-network.d.ts +0 -22
- package/src/wallets/ethereum/evm-network.js +0 -16
- package/src/wallets/ethereum/fortmatic.cjs +0 -75
- package/src/wallets/ethereum/fortmatic.d.ts +0 -26
- package/src/wallets/ethereum/fortmatic.js +0 -69
- package/src/wallets/ethereum/injected/BloctoInjected.cjs +0 -13
- package/src/wallets/ethereum/injected/BloctoInjected.d.ts +0 -6
- package/src/wallets/ethereum/injected/BloctoInjected.js +0 -11
- package/src/wallets/ethereum/injected/BraveEvm.cjs +0 -13
- package/src/wallets/ethereum/injected/BraveEvm.d.ts +0 -6
- package/src/wallets/ethereum/injected/BraveEvm.js +0 -11
- package/src/wallets/ethereum/injected/Dawn.cjs +0 -13
- package/src/wallets/ethereum/injected/Dawn.d.ts +0 -6
- package/src/wallets/ethereum/injected/Dawn.js +0 -11
- package/src/wallets/ethereum/injected/ExodusEvm.cjs +0 -13
- package/src/wallets/ethereum/injected/ExodusEvm.d.ts +0 -6
- package/src/wallets/ethereum/injected/ExodusEvm.js +0 -11
- package/src/wallets/ethereum/injected/Frame.cjs +0 -13
- package/src/wallets/ethereum/injected/Frame.d.ts +0 -6
- package/src/wallets/ethereum/injected/Frame.js +0 -11
- package/src/wallets/ethereum/injected/GameStop.cjs +0 -13
- package/src/wallets/ethereum/injected/GameStop.d.ts +0 -6
- package/src/wallets/ethereum/injected/GameStop.js +0 -11
- package/src/wallets/ethereum/injected/Opera.cjs +0 -13
- package/src/wallets/ethereum/injected/Opera.d.ts +0 -6
- package/src/wallets/ethereum/injected/Opera.js +0 -11
- package/src/wallets/ethereum/injected/PhantomEvm.cjs +0 -37
- package/src/wallets/ethereum/injected/PhantomEvm.d.ts +0 -7
- package/src/wallets/ethereum/injected/PhantomEvm.js +0 -35
- package/src/wallets/ethereum/injected/Trust.cjs +0 -13
- package/src/wallets/ethereum/injected/Trust.d.ts +0 -6
- package/src/wallets/ethereum/injected/Trust.js +0 -11
- package/src/wallets/ethereum/injected/UnknownInjectedWallet.cjs +0 -13
- package/src/wallets/ethereum/injected/UnknownInjectedWallet.d.ts +0 -6
- package/src/wallets/ethereum/injected/UnknownInjectedWallet.js +0 -11
- package/src/wallets/ethereum/injected/Zerion.cjs +0 -13
- package/src/wallets/ethereum/injected/Zerion.d.ts +0 -6
- package/src/wallets/ethereum/injected/Zerion.js +0 -11
- package/src/wallets/ethereum/meta-mask.cjs +0 -63
- package/src/wallets/ethereum/meta-mask.d.ts +0 -26
- package/src/wallets/ethereum/meta-mask.js +0 -61
- package/src/wallets/getMobileOrInjectedWallet.cjs +0 -26
- package/src/wallets/getMobileOrInjectedWallet.d.ts +0 -8
- package/src/wallets/getMobileOrInjectedWallet.js +0 -22
- package/src/wallets/getWalletConnectConnector.cjs +0 -19
- package/src/wallets/getWalletConnectConnector.d.ts +0 -8
- package/src/wallets/getWalletConnectConnector.js +0 -15
- package/src/wallets/solana/CoinbaseSolana.cjs +0 -54
- package/src/wallets/solana/CoinbaseSolana.d.ts +0 -17
- package/src/wallets/solana/CoinbaseSolana.js +0 -52
- package/src/wallets/solana/glow.cjs +0 -51
- package/src/wallets/solana/glow.d.ts +0 -16
- package/src/wallets/solana/glow.js +0 -49
- package/src/wallets/solana/injected/BraveSol.cjs +0 -18
- package/src/wallets/solana/injected/BraveSol.d.ts +0 -6
- package/src/wallets/solana/injected/BraveSol.js +0 -16
- package/src/wallets/solana/injected/ExodusSol.cjs +0 -12
- package/src/wallets/solana/injected/ExodusSol.d.ts +0 -5
- package/src/wallets/solana/injected/ExodusSol.js +0 -10
- package/src/wallets/solana/phantom-ledger.cjs +0 -71
- package/src/wallets/solana/phantom-ledger.d.ts +0 -16
- package/src/wallets/solana/phantom-ledger.js +0 -65
- package/src/wallets/solana/phantom.cjs +0 -74
- package/src/wallets/solana/phantom.d.ts +0 -17
- package/src/wallets/solana/phantom.js +0 -72
- package/src/wallets/solana/slope.cjs +0 -96
- package/src/wallets/solana/slope.d.ts +0 -27
- package/src/wallets/solana/slope.js +0 -94
- package/src/wallets/solana/solProviderHelper.cjs +0 -164
- package/src/wallets/solana/solProviderHelper.d.ts +0 -29
- package/src/wallets/solana/solProviderHelper.js +0 -160
- package/src/wallets/solana/solWalletConnector.cjs +0 -57
- package/src/wallets/solana/solWalletConnector.d.ts +0 -18
- package/src/wallets/solana/solWalletConnector.js +0 -53
- package/src/wallets/solana/solflare.cjs +0 -65
- package/src/wallets/solana/solflare.d.ts +0 -14
- package/src/wallets/solana/solflare.js +0 -63
- package/src/wallets/walletConnect/index.d.ts +0 -2
- package/src/wallets/walletConnect/walletConnect.cjs +0 -130
- package/src/wallets/walletConnect/walletConnect.d.ts +0 -34
- package/src/wallets/walletConnect/walletConnect.js +0 -124
- package/src/wallets/walletConnect/walletConnectV2.cjs +0 -268
- package/src/wallets/walletConnect/walletConnectV2.d.ts +0 -38
- package/src/wallets/walletConnect/walletConnectV2.js +0 -262
- package/src/wallets/walletConnect/zerion.d.ts +0 -8
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
import { __awaiter } from 'tslib';
|
|
2
|
-
import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
|
|
2
|
+
import { WalletConnectorBase, logger } from '@dynamic-labs/wallet-connector-core';
|
|
3
3
|
import { getWalletBookWallet } from '@dynamic-labs/wallet-book';
|
|
4
|
-
import {
|
|
5
|
-
import { isMobile, isIOS } from '../../utils/isMobile.js';
|
|
6
|
-
import { logger } from '../../utils/logger.js';
|
|
4
|
+
import { parseEvmNetworks, parseChainId, isMobile, isIOS } from '@dynamic-labs/utils';
|
|
7
5
|
import { KeplrWalletConnectV1 } from './wcClient.js';
|
|
6
|
+
import { initClient, fetchWalletConnectCosmosPublicAddress, killWalletConnectSession, getDeepLink, setupWalletConnectEventListeners, teardownWalletConnectEventListeners } from './wcClient.lib.js';
|
|
8
7
|
|
|
9
8
|
const DYNAMIC_KEPLR_NETWORK_ID = 'dynamic_keplr_wc_network_id';
|
|
10
9
|
class KeplrWalletConnect extends WalletConnectorBase {
|
|
11
|
-
constructor(
|
|
12
|
-
|
|
13
|
-
super();
|
|
10
|
+
constructor(props) {
|
|
11
|
+
super(props);
|
|
14
12
|
this.name = 'Keplr';
|
|
15
13
|
this.isWalletConnect = true;
|
|
16
14
|
this.canConnectViaQrCode = true;
|
|
@@ -27,22 +25,24 @@ class KeplrWalletConnect extends WalletConnectorBase {
|
|
|
27
25
|
};
|
|
28
26
|
this.supportedChains = ['COSMOS'];
|
|
29
27
|
this.connectedChain = 'COSMOS';
|
|
30
|
-
this.evmNetworks =
|
|
28
|
+
this.evmNetworks = parseEvmNetworks(props.cosmosNetworks);
|
|
31
29
|
const persistedNetworkId = localStorage.getItem(DYNAMIC_KEPLR_NETWORK_ID);
|
|
32
30
|
if (persistedNetworkId) {
|
|
33
31
|
this.selectedNetworkId = Number(persistedNetworkId);
|
|
34
32
|
}
|
|
35
33
|
else {
|
|
36
|
-
this.selectedNetworkId =
|
|
34
|
+
this.selectedNetworkId =
|
|
35
|
+
(this.evmNetworks[0] && parseChainId(this.evmNetworks[0].chainId)) ||
|
|
36
|
+
401;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
get evmNetwork() {
|
|
40
40
|
var _a;
|
|
41
|
-
return (_a = this.evmNetworks) === null || _a === void 0 ? void 0 : _a.find((network) => network.chainId === this.selectedNetworkId);
|
|
41
|
+
return (_a = this.evmNetworks) === null || _a === void 0 ? void 0 : _a.find((network) => parseChainId(network.chainId) === this.selectedNetworkId);
|
|
42
42
|
}
|
|
43
43
|
get selectedNetwork() {
|
|
44
44
|
var _a;
|
|
45
|
-
return (_a = this.evmNetworks) === null || _a === void 0 ? void 0 : _a.find((network) => network.networkId === this.selectedNetworkId);
|
|
45
|
+
return (_a = this.evmNetworks) === null || _a === void 0 ? void 0 : _a.find((network) => parseChainId(network.networkId) === this.selectedNetworkId);
|
|
46
46
|
}
|
|
47
47
|
get lcdUrl() {
|
|
48
48
|
var _a;
|
|
@@ -56,7 +56,7 @@ class KeplrWalletConnect extends WalletConnectorBase {
|
|
|
56
56
|
if (!this.selectedNetwork) {
|
|
57
57
|
return 'osmosis-1';
|
|
58
58
|
}
|
|
59
|
-
return this.chainIdMap[this.selectedNetwork.chainId];
|
|
59
|
+
return this.chainIdMap[parseChainId(this.selectedNetwork.chainId)];
|
|
60
60
|
}
|
|
61
61
|
getProvider() {
|
|
62
62
|
if (!this._keplrInstance) {
|
|
@@ -177,7 +177,7 @@ class KeplrWalletConnect extends WalletConnectorBase {
|
|
|
177
177
|
return this.getProvider();
|
|
178
178
|
}
|
|
179
179
|
setupEventListeners(listeners) {
|
|
180
|
-
|
|
180
|
+
setupWalletConnectEventListeners({
|
|
181
181
|
onAccountChange: listeners.onAccountChange,
|
|
182
182
|
onChainChange: listeners.onChainChange,
|
|
183
183
|
onDisconnect: listeners.onDisconnect,
|
|
@@ -4,14 +4,23 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var tslib = require('tslib');
|
|
6
6
|
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
7
|
-
var
|
|
7
|
+
var utils = require('@dynamic-labs/utils');
|
|
8
|
+
var KeplrWalletConnect = require('./KeplrWalletConnect.cjs');
|
|
8
9
|
|
|
9
10
|
const DYNAMIC_KEPLR_NETWORK_ID = 'dynamic_keplr_network_id';
|
|
10
11
|
class KeplrWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
getMobileOrInstalledWallet() {
|
|
13
|
+
if (this.isInstalledOnBrowser()) {
|
|
14
|
+
return this;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
return new KeplrWalletConnect(this.constructorProps);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
constructor(props) {
|
|
21
|
+
super(props);
|
|
13
22
|
this.switchNetworkOnlyFromWallet = true;
|
|
14
|
-
this.
|
|
23
|
+
this._selectedNetworkId = 401;
|
|
15
24
|
this.name = 'Keplr';
|
|
16
25
|
this.connectedChain = 'COSMOS';
|
|
17
26
|
this.supportedChains = ['COSMOS'];
|
|
@@ -20,13 +29,19 @@ class KeplrWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
20
29
|
402: 'axelar-dojo-1',
|
|
21
30
|
403: 'osmosis-1',
|
|
22
31
|
};
|
|
23
|
-
this.evmNetworks =
|
|
32
|
+
this.evmNetworks = utils.parseEvmNetworks(props.cosmosNetworks);
|
|
24
33
|
this._handleAccountChange = this._handleAccountChange.bind(this);
|
|
25
34
|
const persistedNetworkId = localStorage.getItem(DYNAMIC_KEPLR_NETWORK_ID);
|
|
26
35
|
if (persistedNetworkId) {
|
|
27
36
|
this.selectedNetworkId = Number(persistedNetworkId);
|
|
28
37
|
}
|
|
29
38
|
}
|
|
39
|
+
get selectedNetworkId() {
|
|
40
|
+
return this._selectedNetworkId;
|
|
41
|
+
}
|
|
42
|
+
set selectedNetworkId(networkId) {
|
|
43
|
+
this._selectedNetworkId = utils.parseChainId(networkId);
|
|
44
|
+
}
|
|
30
45
|
getWeb3Provider() {
|
|
31
46
|
return this.keplr;
|
|
32
47
|
}
|
|
@@ -175,7 +190,7 @@ class KeplrWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
175
190
|
return balance.toString();
|
|
176
191
|
}
|
|
177
192
|
catch (e) {
|
|
178
|
-
|
|
193
|
+
walletConnectorCore.logger.error(e);
|
|
179
194
|
return '0';
|
|
180
195
|
}
|
|
181
196
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Keplr as KeplrWallet } from '@keplr-wallet/types';
|
|
2
2
|
import { Chain, WalletConnectorBase, WalletEventListeners } from '@dynamic-labs/wallet-connector-core';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { EvmNetwork, GenericNetwork } from '@dynamic-labs/types';
|
|
4
|
+
import KeplrWalletConnect, { SwitchNetworkOps } from './KeplrWalletConnect';
|
|
5
5
|
export interface IFetchBalanceResponse {
|
|
6
6
|
balances: IFetchBalanceBalance[];
|
|
7
7
|
pagination: IFetchBalancePagination;
|
|
@@ -14,17 +14,21 @@ export interface IFetchBalancePagination {
|
|
|
14
14
|
next_key: any;
|
|
15
15
|
total: string;
|
|
16
16
|
}
|
|
17
|
+
export type KeplrWalletConnectorProps = {
|
|
18
|
+
cosmosNetworks: GenericNetwork[];
|
|
19
|
+
};
|
|
17
20
|
export declare class KeplrWalletConnector extends WalletConnectorBase {
|
|
18
21
|
evmNetworks: EvmNetwork[];
|
|
19
22
|
switchNetworkOnlyFromWallet: boolean;
|
|
20
|
-
|
|
23
|
+
private _selectedNetworkId;
|
|
21
24
|
name: string;
|
|
22
25
|
connectedChain: Chain;
|
|
23
26
|
supportedChains: Chain[];
|
|
24
27
|
chainIdMap: Record<number, string>;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
getMobileOrInstalledWallet(): this | KeplrWalletConnect;
|
|
29
|
+
constructor(props: KeplrWalletConnectorProps);
|
|
30
|
+
get selectedNetworkId(): number;
|
|
31
|
+
set selectedNetworkId(networkId: number);
|
|
28
32
|
getWeb3Provider(): KeplrWallet;
|
|
29
33
|
getDeepLink(): string | undefined;
|
|
30
34
|
get selectedNetwork(): EvmNetwork | undefined;
|
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
import { __awaiter } from 'tslib';
|
|
2
|
-
import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
|
|
3
|
-
import {
|
|
2
|
+
import { WalletConnectorBase, logger } from '@dynamic-labs/wallet-connector-core';
|
|
3
|
+
import { parseEvmNetworks, parseChainId } from '@dynamic-labs/utils';
|
|
4
|
+
import KeplrWalletConnect from './KeplrWalletConnect.js';
|
|
4
5
|
|
|
5
6
|
const DYNAMIC_KEPLR_NETWORK_ID = 'dynamic_keplr_network_id';
|
|
6
7
|
class KeplrWalletConnector extends WalletConnectorBase {
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
getMobileOrInstalledWallet() {
|
|
9
|
+
if (this.isInstalledOnBrowser()) {
|
|
10
|
+
return this;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
return new KeplrWalletConnect(this.constructorProps);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
constructor(props) {
|
|
17
|
+
super(props);
|
|
9
18
|
this.switchNetworkOnlyFromWallet = true;
|
|
10
|
-
this.
|
|
19
|
+
this._selectedNetworkId = 401;
|
|
11
20
|
this.name = 'Keplr';
|
|
12
21
|
this.connectedChain = 'COSMOS';
|
|
13
22
|
this.supportedChains = ['COSMOS'];
|
|
@@ -16,13 +25,19 @@ class KeplrWalletConnector extends WalletConnectorBase {
|
|
|
16
25
|
402: 'axelar-dojo-1',
|
|
17
26
|
403: 'osmosis-1',
|
|
18
27
|
};
|
|
19
|
-
this.evmNetworks =
|
|
28
|
+
this.evmNetworks = parseEvmNetworks(props.cosmosNetworks);
|
|
20
29
|
this._handleAccountChange = this._handleAccountChange.bind(this);
|
|
21
30
|
const persistedNetworkId = localStorage.getItem(DYNAMIC_KEPLR_NETWORK_ID);
|
|
22
31
|
if (persistedNetworkId) {
|
|
23
32
|
this.selectedNetworkId = Number(persistedNetworkId);
|
|
24
33
|
}
|
|
25
34
|
}
|
|
35
|
+
get selectedNetworkId() {
|
|
36
|
+
return this._selectedNetworkId;
|
|
37
|
+
}
|
|
38
|
+
set selectedNetworkId(networkId) {
|
|
39
|
+
this._selectedNetworkId = parseChainId(networkId);
|
|
40
|
+
}
|
|
26
41
|
getWeb3Provider() {
|
|
27
42
|
return this.keplr;
|
|
28
43
|
}
|
|
@@ -4,9 +4,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var tslib = require('tslib');
|
|
6
6
|
var Client = require('@walletconnect/client');
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var logger = require('../../../utils/logger.cjs');
|
|
7
|
+
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
8
|
+
var utils = require('@dynamic-labs/utils');
|
|
10
9
|
|
|
11
10
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
12
11
|
|
|
@@ -20,14 +19,25 @@ const initClient = (name, settings) => {
|
|
|
20
19
|
: { bridge: 'https://bridge.walletconnect.org', storageId };
|
|
21
20
|
return new Client__default["default"](Object.assign(Object.assign({}, clientArgs), settings));
|
|
22
21
|
};
|
|
22
|
+
/**
|
|
23
|
+
* Initialize a client from a stored session and terminate the connection.
|
|
24
|
+
*/
|
|
25
|
+
const killWalletConnectSession = (client) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
26
|
+
try {
|
|
27
|
+
if (client === null || client === void 0 ? void 0 : client.connected) {
|
|
28
|
+
yield client.killSession();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
32
|
+
walletConnectorCore.logger.debug(e);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
23
35
|
/**
|
|
24
36
|
* Attach event handlers to WalletConnect events.
|
|
25
37
|
*/
|
|
26
38
|
const setupWalletConnectEventListeners = (opts, client) => {
|
|
27
39
|
if (!client) {
|
|
28
|
-
return
|
|
29
|
-
// nothing to teardown
|
|
30
|
-
};
|
|
40
|
+
return;
|
|
31
41
|
}
|
|
32
42
|
let prevAccount;
|
|
33
43
|
let prevChain;
|
|
@@ -44,7 +54,7 @@ const setupWalletConnectEventListeners = (opts, client) => {
|
|
|
44
54
|
var _b, _c;
|
|
45
55
|
// eslint-disable-next-line prefer-destructuring
|
|
46
56
|
const { accounts, chainId } = payload.params[0];
|
|
47
|
-
const didAccountChange = !
|
|
57
|
+
const didAccountChange = !walletConnectorCore.isSameAddress(prevAccount || '', accounts[0], 'eip155');
|
|
48
58
|
const didChainChange = prevChain !== chainId;
|
|
49
59
|
// eslint-disable-next-line prefer-destructuring
|
|
50
60
|
prevAccount = accounts[0];
|
|
@@ -56,31 +66,27 @@ const setupWalletConnectEventListeners = (opts, client) => {
|
|
|
56
66
|
yield ((_c = opts.onChainChange) === null || _c === void 0 ? void 0 : _c.call(opts, String(chainId)));
|
|
57
67
|
}
|
|
58
68
|
}));
|
|
59
|
-
return () => {
|
|
60
|
-
client.off('disconnect');
|
|
61
|
-
client.off('session_update');
|
|
62
|
-
};
|
|
63
69
|
};
|
|
64
70
|
const teardownWalletConnectEventListeners = (client) => {
|
|
65
71
|
client.off('disconnect');
|
|
66
72
|
client.off('session_update');
|
|
67
73
|
};
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
if (client === null || client === void 0 ? void 0 : client.connected) {
|
|
74
|
-
yield client.killSession();
|
|
75
|
-
}
|
|
74
|
+
const useDeepLink = (metadata, wcClient, opts) => {
|
|
75
|
+
var _a, _b, _c;
|
|
76
|
+
const deepLink = getDeepLink(wcClient.uri, metadata);
|
|
77
|
+
if (utils.isMobile()) {
|
|
78
|
+
window.location.href = deepLink;
|
|
76
79
|
}
|
|
77
|
-
|
|
78
|
-
|
|
80
|
+
else {
|
|
81
|
+
if ((_a = metadata === null || metadata === void 0 ? void 0 : metadata.desktop) === null || _a === void 0 ? void 0 : _a.native) {
|
|
82
|
+
(_b = opts === null || opts === void 0 ? void 0 : opts.onDesktopUri) === null || _b === void 0 ? void 0 : _b.call(opts, deepLink);
|
|
83
|
+
}
|
|
84
|
+
(_c = opts === null || opts === void 0 ? void 0 : opts.onDisplayUri) === null || _c === void 0 ? void 0 : _c.call(opts, wcClient.uri);
|
|
79
85
|
}
|
|
80
|
-
}
|
|
86
|
+
};
|
|
81
87
|
const getDeepLink = (uri, metadata, { removeWCUri = false, } = {}) => {
|
|
82
88
|
var _a, _b, _c, _d;
|
|
83
|
-
if (!
|
|
89
|
+
if (!utils.isMobile()) {
|
|
84
90
|
const origin = ((_a = metadata.desktop) === null || _a === void 0 ? void 0 : _a.universal) || ((_b = metadata.desktop) === null || _b === void 0 ? void 0 : _b.native);
|
|
85
91
|
if (removeWCUri)
|
|
86
92
|
return origin || '';
|
|
@@ -88,7 +94,7 @@ const getDeepLink = (uri, metadata, { removeWCUri = false, } = {}) => {
|
|
|
88
94
|
}
|
|
89
95
|
// deeplinks for ios require special treatment
|
|
90
96
|
// see: https://docs.walletconnect.com/mobile-linking#for-ios
|
|
91
|
-
else if (
|
|
97
|
+
else if (utils.isIOS()) {
|
|
92
98
|
const origin = ((_c = metadata.mobile) === null || _c === void 0 ? void 0 : _c.universal) || ((_d = metadata.mobile) === null || _d === void 0 ? void 0 : _d.native);
|
|
93
99
|
if (removeWCUri)
|
|
94
100
|
return origin || '';
|
|
@@ -100,34 +106,16 @@ const getDeepLink = (uri, metadata, { removeWCUri = false, } = {}) => {
|
|
|
100
106
|
};
|
|
101
107
|
const createSession = (client) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
102
108
|
return new Promise((resolve, reject) => {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
catch (e) {
|
|
114
|
-
reject(e);
|
|
115
|
-
}
|
|
109
|
+
client.on('connect', (error, payload) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
110
|
+
if (error)
|
|
111
|
+
throw error;
|
|
112
|
+
resolve(payload);
|
|
113
|
+
}));
|
|
114
|
+
client.on('disconnect', (error, payload) => {
|
|
115
|
+
reject(error || payload.params[0].message);
|
|
116
|
+
});
|
|
116
117
|
});
|
|
117
118
|
});
|
|
118
|
-
const useDeepLink = (metadata, wcClient, opts) => {
|
|
119
|
-
var _a, _b, _c;
|
|
120
|
-
const deepLink = getDeepLink(wcClient.uri, metadata);
|
|
121
|
-
if (isMobile.isMobile()) {
|
|
122
|
-
window.location.href = deepLink;
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
if ((_a = metadata === null || metadata === void 0 ? void 0 : metadata.desktop) === null || _a === void 0 ? void 0 : _a.native) {
|
|
126
|
-
(_b = opts === null || opts === void 0 ? void 0 : opts.onDesktopUri) === null || _b === void 0 ? void 0 : _b.call(opts, deepLink);
|
|
127
|
-
}
|
|
128
|
-
(_c = opts === null || opts === void 0 ? void 0 : opts.onDisplayUri) === null || _c === void 0 ? void 0 : _c.call(opts, wcClient.uri);
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
119
|
const fetchWalletConnectCosmosPublicAddress = (metadata, wcClient, provider, opts) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
132
120
|
var _a;
|
|
133
121
|
if (wcClient.connected) {
|
|
@@ -141,64 +129,13 @@ const fetchWalletConnectCosmosPublicAddress = (metadata, wcClient, provider, opt
|
|
|
141
129
|
(_a = opts === null || opts === void 0 ? void 0 : opts.onConnect) === null || _a === void 0 ? void 0 : _a.call(opts, payload);
|
|
142
130
|
wcClient.accounts = [key.bech32Address];
|
|
143
131
|
return key.bech32Address;
|
|
144
|
-
});
|
|
145
|
-
const fetchWalletConnectEVMPublicAddress = (metadata, wcClient, opts) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
146
|
-
var _b;
|
|
147
|
-
if (wcClient.connected) {
|
|
148
|
-
const [accountPublicAddress] = wcClient.accounts;
|
|
149
|
-
return accountPublicAddress;
|
|
150
|
-
}
|
|
151
|
-
// createSession will trigger the QR code...
|
|
152
|
-
yield wcClient.createSession();
|
|
153
|
-
useDeepLink(metadata, wcClient, opts);
|
|
154
|
-
const payload = yield createSession(wcClient);
|
|
155
|
-
(_b = opts === null || opts === void 0 ? void 0 : opts.onConnect) === null || _b === void 0 ? void 0 : _b.call(opts, payload);
|
|
156
|
-
const [accountPublicAddress] = payload.params[0].accounts;
|
|
157
|
-
return accountPublicAddress;
|
|
158
|
-
});
|
|
159
|
-
const signWalletConnectPersonalMessage = (messageToSign, metadata, client) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
160
|
-
var _c, _d;
|
|
161
|
-
const isCryptoWallet = ((_c = client === null || client === void 0 ? void 0 : client.peerMeta) === null || _c === void 0 ? void 0 : _c.name) === 'Crypto.com | DeFi Wallet' ||
|
|
162
|
-
((_d = client === null || client === void 0 ? void 0 : client.peerMeta) === null || _d === void 0 ? void 0 : _d.name) === 'DeFi Wallet';
|
|
163
|
-
if (!client || !client.connected) {
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
167
|
-
const [accountPublicAddress] = client.accounts;
|
|
168
|
-
if (isMobile.isMobile()) {
|
|
169
|
-
const deepLink = getDeepLink(client.uri, metadata, {
|
|
170
|
-
removeWCUri: isMobile.isIOS() && isCryptoWallet,
|
|
171
|
-
});
|
|
172
|
-
window.location.href = deepLink;
|
|
173
|
-
}
|
|
174
|
-
try {
|
|
175
|
-
// This delay is required for Crypto.com DeFi wallet, when there is no delay the app
|
|
176
|
-
// will not open the pop-up to sign. That seems to be a limitation in the standalone client
|
|
177
|
-
// so the delay is required to allow the users to sign the message
|
|
178
|
-
if (isCryptoWallet && isMobile.isMobile()) {
|
|
179
|
-
yield sleep(4000);
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
// The delay of 1 second is necessary for some of the wallets to open the sign UI in the
|
|
183
|
-
// correct order, without this some wallets like Trust or OKX will no open properly,
|
|
184
|
-
// and not allowing the user to sign the message
|
|
185
|
-
yield sleep(1000);
|
|
186
|
-
}
|
|
187
|
-
return client.signPersonalMessage([messageToSign, accountPublicAddress]);
|
|
188
|
-
}
|
|
189
|
-
catch (e) {
|
|
190
|
-
logger.logger.debug(e);
|
|
191
|
-
throw e;
|
|
192
|
-
}
|
|
193
132
|
});
|
|
194
133
|
|
|
195
134
|
exports.createSession = createSession;
|
|
196
135
|
exports.fetchWalletConnectCosmosPublicAddress = fetchWalletConnectCosmosPublicAddress;
|
|
197
|
-
exports.fetchWalletConnectEVMPublicAddress = fetchWalletConnectEVMPublicAddress;
|
|
198
136
|
exports.getDeepLink = getDeepLink;
|
|
199
137
|
exports.initClient = initClient;
|
|
200
138
|
exports.killWalletConnectSession = killWalletConnectSession;
|
|
201
139
|
exports.setupWalletConnectEventListeners = setupWalletConnectEventListeners;
|
|
202
|
-
exports.signWalletConnectPersonalMessage = signWalletConnectPersonalMessage;
|
|
203
140
|
exports.teardownWalletConnectEventListeners = teardownWalletConnectEventListeners;
|
|
204
141
|
exports.useDeepLink = useDeepLink;
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
import Client from '@walletconnect/client';
|
|
2
|
-
import { FetchPublicAddressOpts, PayloadParams, WalletEventListeners } from '@dynamic-labs/wallet-connector-core';
|
|
3
2
|
import { WalletSchema } from '@dynamic-labs/wallet-book';
|
|
4
|
-
import {
|
|
3
|
+
import { FetchPublicAddressOpts, PayloadParams, WalletEventListeners } from '@dynamic-labs/wallet-connector-core';
|
|
4
|
+
import { KeplrWalletConnectV1 } from './wcClient';
|
|
5
5
|
export declare const initClient: (name: string, settings?: any) => Client;
|
|
6
|
-
/**
|
|
7
|
-
* Attach event handlers to WalletConnect events.
|
|
8
|
-
*/
|
|
9
|
-
export declare const setupWalletConnectEventListeners: (opts: WalletEventListeners, client: Client) => (() => void);
|
|
10
|
-
export declare const teardownWalletConnectEventListeners: (client: Client) => void;
|
|
11
6
|
/**
|
|
12
7
|
* Initialize a client from a stored session and terminate the connection.
|
|
13
8
|
*/
|
|
14
9
|
export declare const killWalletConnectSession: (client: Client) => Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Attach event handlers to WalletConnect events.
|
|
12
|
+
*/
|
|
13
|
+
export declare const setupWalletConnectEventListeners: (opts: WalletEventListeners, client: Client) => void;
|
|
14
|
+
export declare const teardownWalletConnectEventListeners: (client: Client) => void;
|
|
15
|
+
export declare const useDeepLink: (metadata: WalletSchema, wcClient: Client, opts?: FetchPublicAddressOpts) => void;
|
|
15
16
|
export declare const getDeepLink: (uri: string, metadata: WalletSchema, { removeWCUri, }?: {
|
|
16
17
|
removeWCUri?: boolean | undefined;
|
|
17
18
|
}) => string;
|
|
18
19
|
export declare const createSession: (client: Client) => Promise<PayloadParams>;
|
|
19
|
-
export declare const useDeepLink: (metadata: WalletSchema, wcClient: Client, opts?: FetchPublicAddressOpts) => void;
|
|
20
20
|
export declare const fetchWalletConnectCosmosPublicAddress: (metadata: WalletSchema, wcClient: Client, provider: KeplrWalletConnectV1, opts: FetchPublicAddressOpts & Required<Pick<FetchPublicAddressOpts, 'chainId'>>) => Promise<string>;
|
|
21
|
-
export declare const fetchWalletConnectEVMPublicAddress: (metadata: WalletSchema, wcClient: Client, opts?: FetchPublicAddressOpts) => Promise<string | undefined>;
|
|
22
|
-
export declare const signWalletConnectPersonalMessage: (messageToSign: string, metadata: WalletSchema, client: Client) => Promise<string | undefined>;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { __awaiter } from 'tslib';
|
|
2
2
|
import Client from '@walletconnect/client';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { logger } from '../../../utils/logger.js';
|
|
3
|
+
import { logger, isSameAddress } from '@dynamic-labs/wallet-connector-core';
|
|
4
|
+
import { isMobile, isIOS } from '@dynamic-labs/utils';
|
|
6
5
|
|
|
7
6
|
const initClient = (name, settings) => {
|
|
8
7
|
const storageId = `walletconnect-${name}`;
|
|
@@ -12,14 +11,25 @@ const initClient = (name, settings) => {
|
|
|
12
11
|
: { bridge: 'https://bridge.walletconnect.org', storageId };
|
|
13
12
|
return new Client(Object.assign(Object.assign({}, clientArgs), settings));
|
|
14
13
|
};
|
|
14
|
+
/**
|
|
15
|
+
* Initialize a client from a stored session and terminate the connection.
|
|
16
|
+
*/
|
|
17
|
+
const killWalletConnectSession = (client) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
try {
|
|
19
|
+
if (client === null || client === void 0 ? void 0 : client.connected) {
|
|
20
|
+
yield client.killSession();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
logger.debug(e);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
15
27
|
/**
|
|
16
28
|
* Attach event handlers to WalletConnect events.
|
|
17
29
|
*/
|
|
18
30
|
const setupWalletConnectEventListeners = (opts, client) => {
|
|
19
31
|
if (!client) {
|
|
20
|
-
return
|
|
21
|
-
// nothing to teardown
|
|
22
|
-
};
|
|
32
|
+
return;
|
|
23
33
|
}
|
|
24
34
|
let prevAccount;
|
|
25
35
|
let prevChain;
|
|
@@ -48,28 +58,24 @@ const setupWalletConnectEventListeners = (opts, client) => {
|
|
|
48
58
|
yield ((_c = opts.onChainChange) === null || _c === void 0 ? void 0 : _c.call(opts, String(chainId)));
|
|
49
59
|
}
|
|
50
60
|
}));
|
|
51
|
-
return () => {
|
|
52
|
-
client.off('disconnect');
|
|
53
|
-
client.off('session_update');
|
|
54
|
-
};
|
|
55
61
|
};
|
|
56
62
|
const teardownWalletConnectEventListeners = (client) => {
|
|
57
63
|
client.off('disconnect');
|
|
58
64
|
client.off('session_update');
|
|
59
65
|
};
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
if (client === null || client === void 0 ? void 0 : client.connected) {
|
|
66
|
-
yield client.killSession();
|
|
67
|
-
}
|
|
66
|
+
const useDeepLink = (metadata, wcClient, opts) => {
|
|
67
|
+
var _a, _b, _c;
|
|
68
|
+
const deepLink = getDeepLink(wcClient.uri, metadata);
|
|
69
|
+
if (isMobile()) {
|
|
70
|
+
window.location.href = deepLink;
|
|
68
71
|
}
|
|
69
|
-
|
|
70
|
-
|
|
72
|
+
else {
|
|
73
|
+
if ((_a = metadata === null || metadata === void 0 ? void 0 : metadata.desktop) === null || _a === void 0 ? void 0 : _a.native) {
|
|
74
|
+
(_b = opts === null || opts === void 0 ? void 0 : opts.onDesktopUri) === null || _b === void 0 ? void 0 : _b.call(opts, deepLink);
|
|
75
|
+
}
|
|
76
|
+
(_c = opts === null || opts === void 0 ? void 0 : opts.onDisplayUri) === null || _c === void 0 ? void 0 : _c.call(opts, wcClient.uri);
|
|
71
77
|
}
|
|
72
|
-
}
|
|
78
|
+
};
|
|
73
79
|
const getDeepLink = (uri, metadata, { removeWCUri = false, } = {}) => {
|
|
74
80
|
var _a, _b, _c, _d;
|
|
75
81
|
if (!isMobile()) {
|
|
@@ -92,34 +98,16 @@ const getDeepLink = (uri, metadata, { removeWCUri = false, } = {}) => {
|
|
|
92
98
|
};
|
|
93
99
|
const createSession = (client) => __awaiter(void 0, void 0, void 0, function* () {
|
|
94
100
|
return new Promise((resolve, reject) => {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
catch (e) {
|
|
106
|
-
reject(e);
|
|
107
|
-
}
|
|
101
|
+
client.on('connect', (error, payload) => __awaiter(void 0, void 0, void 0, function* () {
|
|
102
|
+
if (error)
|
|
103
|
+
throw error;
|
|
104
|
+
resolve(payload);
|
|
105
|
+
}));
|
|
106
|
+
client.on('disconnect', (error, payload) => {
|
|
107
|
+
reject(error || payload.params[0].message);
|
|
108
|
+
});
|
|
108
109
|
});
|
|
109
110
|
});
|
|
110
|
-
const useDeepLink = (metadata, wcClient, opts) => {
|
|
111
|
-
var _a, _b, _c;
|
|
112
|
-
const deepLink = getDeepLink(wcClient.uri, metadata);
|
|
113
|
-
if (isMobile()) {
|
|
114
|
-
window.location.href = deepLink;
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
if ((_a = metadata === null || metadata === void 0 ? void 0 : metadata.desktop) === null || _a === void 0 ? void 0 : _a.native) {
|
|
118
|
-
(_b = opts === null || opts === void 0 ? void 0 : opts.onDesktopUri) === null || _b === void 0 ? void 0 : _b.call(opts, deepLink);
|
|
119
|
-
}
|
|
120
|
-
(_c = opts === null || opts === void 0 ? void 0 : opts.onDisplayUri) === null || _c === void 0 ? void 0 : _c.call(opts, wcClient.uri);
|
|
121
|
-
}
|
|
122
|
-
};
|
|
123
111
|
const fetchWalletConnectCosmosPublicAddress = (metadata, wcClient, provider, opts) => __awaiter(void 0, void 0, void 0, function* () {
|
|
124
112
|
var _a;
|
|
125
113
|
if (wcClient.connected) {
|
|
@@ -133,55 +121,6 @@ const fetchWalletConnectCosmosPublicAddress = (metadata, wcClient, provider, opt
|
|
|
133
121
|
(_a = opts === null || opts === void 0 ? void 0 : opts.onConnect) === null || _a === void 0 ? void 0 : _a.call(opts, payload);
|
|
134
122
|
wcClient.accounts = [key.bech32Address];
|
|
135
123
|
return key.bech32Address;
|
|
136
|
-
});
|
|
137
|
-
const fetchWalletConnectEVMPublicAddress = (metadata, wcClient, opts) => __awaiter(void 0, void 0, void 0, function* () {
|
|
138
|
-
var _b;
|
|
139
|
-
if (wcClient.connected) {
|
|
140
|
-
const [accountPublicAddress] = wcClient.accounts;
|
|
141
|
-
return accountPublicAddress;
|
|
142
|
-
}
|
|
143
|
-
// createSession will trigger the QR code...
|
|
144
|
-
yield wcClient.createSession();
|
|
145
|
-
useDeepLink(metadata, wcClient, opts);
|
|
146
|
-
const payload = yield createSession(wcClient);
|
|
147
|
-
(_b = opts === null || opts === void 0 ? void 0 : opts.onConnect) === null || _b === void 0 ? void 0 : _b.call(opts, payload);
|
|
148
|
-
const [accountPublicAddress] = payload.params[0].accounts;
|
|
149
|
-
return accountPublicAddress;
|
|
150
|
-
});
|
|
151
|
-
const signWalletConnectPersonalMessage = (messageToSign, metadata, client) => __awaiter(void 0, void 0, void 0, function* () {
|
|
152
|
-
var _c, _d;
|
|
153
|
-
const isCryptoWallet = ((_c = client === null || client === void 0 ? void 0 : client.peerMeta) === null || _c === void 0 ? void 0 : _c.name) === 'Crypto.com | DeFi Wallet' ||
|
|
154
|
-
((_d = client === null || client === void 0 ? void 0 : client.peerMeta) === null || _d === void 0 ? void 0 : _d.name) === 'DeFi Wallet';
|
|
155
|
-
if (!client || !client.connected) {
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
159
|
-
const [accountPublicAddress] = client.accounts;
|
|
160
|
-
if (isMobile()) {
|
|
161
|
-
const deepLink = getDeepLink(client.uri, metadata, {
|
|
162
|
-
removeWCUri: isIOS() && isCryptoWallet,
|
|
163
|
-
});
|
|
164
|
-
window.location.href = deepLink;
|
|
165
|
-
}
|
|
166
|
-
try {
|
|
167
|
-
// This delay is required for Crypto.com DeFi wallet, when there is no delay the app
|
|
168
|
-
// will not open the pop-up to sign. That seems to be a limitation in the standalone client
|
|
169
|
-
// so the delay is required to allow the users to sign the message
|
|
170
|
-
if (isCryptoWallet && isMobile()) {
|
|
171
|
-
yield sleep(4000);
|
|
172
|
-
}
|
|
173
|
-
else {
|
|
174
|
-
// The delay of 1 second is necessary for some of the wallets to open the sign UI in the
|
|
175
|
-
// correct order, without this some wallets like Trust or OKX will no open properly,
|
|
176
|
-
// and not allowing the user to sign the message
|
|
177
|
-
yield sleep(1000);
|
|
178
|
-
}
|
|
179
|
-
return client.signPersonalMessage([messageToSign, accountPublicAddress]);
|
|
180
|
-
}
|
|
181
|
-
catch (e) {
|
|
182
|
-
logger.debug(e);
|
|
183
|
-
throw e;
|
|
184
|
-
}
|
|
185
124
|
});
|
|
186
125
|
|
|
187
|
-
export { createSession, fetchWalletConnectCosmosPublicAddress,
|
|
126
|
+
export { createSession, fetchWalletConnectCosmosPublicAddress, getDeepLink, initClient, killWalletConnectSession, setupWalletConnectEventListeners, teardownWalletConnectEventListeners, useDeepLink };
|