@dynamic-labs/global-wallet-client 4.14.0 → 4.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +16 -8
- package/src/features.cjs +30 -0
- package/src/features.d.ts +11 -0
- package/src/features.js +12 -0
- package/src/index.cjs +1 -1
- package/src/index.d.ts +1 -1
- package/src/index.js +1 -1
- package/src/lib/client/assignClient/assignClient.cjs +15 -0
- package/src/lib/client/assignClient/assignClient.d.ts +2 -0
- package/src/lib/client/assignClient/assignClient.js +11 -0
- package/src/lib/client/assignClient/index.d.ts +1 -0
- package/src/lib/client/assignCore/assignCore.cjs +15 -0
- package/src/lib/client/assignCore/assignCore.d.ts +2 -0
- package/src/lib/client/assignCore/assignCore.js +11 -0
- package/src/lib/client/assignCore/index.d.ts +1 -0
- package/src/lib/client/createClientStore/createClientStore.cjs +20 -0
- package/src/lib/client/createClientStore/createClientStore.d.ts +35 -0
- package/src/lib/client/createClientStore/createClientStore.js +16 -0
- package/src/lib/client/createClientStore/index.d.ts +1 -0
- package/src/lib/client/createCore/createCore.cjs +42 -0
- package/src/lib/client/createCore/createCore.d.ts +19 -0
- package/src/lib/client/createCore/createCore.js +38 -0
- package/src/lib/client/createCore/index.d.ts +1 -0
- package/src/lib/client/createGlobalWalletClient/createGlobalWalletClient.cjs +35 -0
- package/src/lib/client/createGlobalWalletClient/createGlobalWalletClient.d.ts +11 -0
- package/src/lib/client/createGlobalWalletClient/createGlobalWalletClient.js +31 -0
- package/src/lib/client/createGlobalWalletClient/index.d.ts +1 -0
- package/src/lib/client/getClient/getClient.cjs +14 -0
- package/src/lib/client/getClient/getClient.d.ts +2 -0
- package/src/lib/client/getClient/getClient.js +10 -0
- package/src/lib/client/getClient/index.d.ts +1 -0
- package/src/lib/client/getCore/getCore.cjs +10 -0
- package/src/lib/client/getCore/getCore.d.ts +3 -0
- package/src/lib/client/getCore/getCore.js +6 -0
- package/src/lib/client/getCore/index.d.ts +1 -0
- package/src/lib/client/index.d.ts +7 -0
- package/src/lib/client/types.d.ts +5 -0
- package/src/lib/errors/ClientDisconnectedError.cjs +12 -0
- package/src/lib/errors/ClientDisconnectedError.d.ts +3 -0
- package/src/lib/errors/ClientDisconnectedError.js +8 -0
- package/src/lib/errors/NetworkNotSupportedError.cjs +18 -0
- package/src/lib/errors/NetworkNotSupportedError.d.ts +3 -0
- package/src/lib/errors/NetworkNotSupportedError.js +14 -0
- package/src/lib/ethereum/functions/eip1193Provider/createEIP1193Provider.cjs +37 -25
- package/src/lib/ethereum/functions/eip1193Provider/createEIP1193Provider.d.ts +1 -1
- package/src/lib/ethereum/functions/eip1193Provider/createEIP1193Provider.js +37 -25
- package/src/lib/functions/clearStore/clearStore.cjs +24 -0
- package/src/lib/functions/clearStore/clearStore.d.ts +5 -0
- package/src/lib/functions/clearStore/clearStore.js +20 -0
- package/src/lib/functions/clearStore/index.d.ts +1 -0
- package/src/lib/{actions/connectAction/createConnectAction.cjs → functions/connect/connect.cjs} +32 -12
- package/src/lib/functions/connect/connect.d.ts +15 -0
- package/src/lib/{actions/connectAction/createConnectAction.js → functions/connect/connect.js} +32 -12
- package/src/lib/functions/connect/index.d.ts +1 -0
- package/src/lib/functions/createPopupMessageClient/createPopupMessageClient.d.ts +6 -6
- package/src/lib/functions/createPopupOpener/createPopupOpener.cjs +5 -6
- package/src/lib/functions/createPopupOpener/createPopupOpener.d.ts +4 -5
- package/src/lib/functions/createPopupOpener/createPopupOpener.js +5 -6
- package/src/lib/functions/createPopupOpener/index.d.ts +1 -1
- package/src/lib/functions/disconnect/disconnect.cjs +38 -0
- package/src/lib/functions/disconnect/disconnect.d.ts +14 -0
- package/src/lib/functions/disconnect/disconnect.js +34 -0
- package/src/lib/functions/disconnect/index.d.ts +1 -0
- package/src/lib/functions/getActiveConnection/getActiveConnection.cjs +35 -0
- package/src/lib/functions/getActiveConnection/getActiveConnection.d.ts +6 -0
- package/src/lib/functions/getActiveConnection/getActiveConnection.js +31 -0
- package/src/lib/functions/getActiveConnection/index.d.ts +1 -0
- package/src/lib/functions/getCurrentEthereumNetworkId/getCurrentEthereumNetworkId.cjs +38 -0
- package/src/lib/functions/getCurrentEthereumNetworkId/getCurrentEthereumNetworkId.d.ts +16 -0
- package/src/lib/functions/getCurrentEthereumNetworkId/getCurrentEthereumNetworkId.js +34 -0
- package/src/lib/functions/getCurrentEthereumNetworkId/index.d.ts +1 -0
- package/src/lib/functions/getCurrentSolanaNetwork/getCurrentSolanaNetwork.cjs +38 -0
- package/src/lib/functions/getCurrentSolanaNetwork/getCurrentSolanaNetwork.d.ts +16 -0
- package/src/lib/functions/getCurrentSolanaNetwork/getCurrentSolanaNetwork.js +34 -0
- package/src/lib/functions/getCurrentSolanaNetwork/index.d.ts +1 -0
- package/src/lib/functions/getEthereumWallets/getEthereumWallets.cjs +17 -0
- package/src/lib/functions/getEthereumWallets/getEthereumWallets.d.ts +10 -0
- package/src/lib/functions/getEthereumWallets/getEthereumWallets.js +13 -0
- package/src/lib/functions/getEthereumWallets/index.d.ts +1 -0
- package/src/lib/functions/getSolanaWallets/getSolanaWallets.cjs +17 -0
- package/src/lib/functions/getSolanaWallets/getSolanaWallets.d.ts +10 -0
- package/src/lib/functions/getSolanaWallets/getSolanaWallets.js +13 -0
- package/src/lib/functions/getSolanaWallets/index.d.ts +1 -0
- package/src/lib/functions/getSupportedEthereumNetworks/getSupportedEthereumNetworks.cjs +31 -0
- package/src/lib/functions/getSupportedEthereumNetworks/getSupportedEthereumNetworks.d.ts +9 -0
- package/src/lib/functions/getSupportedEthereumNetworks/getSupportedEthereumNetworks.js +27 -0
- package/src/lib/functions/getSupportedEthereumNetworks/index.d.ts +1 -0
- package/src/lib/functions/getWalletNetwork/getWalletNetwork.cjs +37 -0
- package/src/lib/functions/getWalletNetwork/getWalletNetwork.d.ts +9 -0
- package/src/lib/functions/getWalletNetwork/getWalletNetwork.js +33 -0
- package/src/lib/functions/getWalletNetwork/index.d.ts +1 -0
- package/src/lib/functions/isEthereumNetworkSupported/index.d.ts +1 -0
- package/src/lib/functions/isEthereumNetworkSupported/isEthereumNetworkSupported.cjs +8 -0
- package/src/lib/functions/isEthereumNetworkSupported/isEthereumNetworkSupported.d.ts +4 -0
- package/src/lib/functions/isEthereumNetworkSupported/isEthereumNetworkSupported.js +4 -0
- package/src/lib/functions/isEthereumWallet/index.d.ts +1 -0
- package/src/lib/functions/isEthereumWallet/isEthereumWallet.cjs +15 -0
- package/src/lib/functions/isEthereumWallet/isEthereumWallet.d.ts +9 -0
- package/src/lib/functions/isEthereumWallet/isEthereumWallet.js +11 -0
- package/src/lib/functions/isSolanaWallet/index.d.ts +1 -0
- package/src/lib/functions/isSolanaWallet/isSolanaWallet.cjs +15 -0
- package/src/lib/functions/isSolanaWallet/isSolanaWallet.d.ts +9 -0
- package/src/lib/functions/isSolanaWallet/isSolanaWallet.js +11 -0
- package/src/lib/functions/onEvent/index.d.ts +1 -0
- package/src/lib/functions/onEvent/onEvent.cjs +46 -0
- package/src/lib/functions/onEvent/onEvent.d.ts +23 -0
- package/src/lib/functions/onEvent/onEvent.js +42 -0
- package/src/lib/functions/setInitialConnectionState/index.d.ts +1 -0
- package/src/lib/functions/setInitialConnectionState/setInitialConnectionState.cjs +31 -0
- package/src/lib/functions/setInitialConnectionState/setInitialConnectionState.d.ts +7 -0
- package/src/lib/functions/setInitialConnectionState/setInitialConnectionState.js +27 -0
- package/src/lib/functions/signEthereumMessage/index.d.ts +1 -0
- package/src/lib/functions/signEthereumMessage/signEthereumMessage.cjs +40 -0
- package/src/lib/functions/signEthereumMessage/signEthereumMessage.d.ts +9 -0
- package/src/lib/functions/signEthereumMessage/signEthereumMessage.js +36 -0
- package/src/lib/functions/signMessage/index.d.ts +1 -0
- package/src/lib/functions/signMessage/signMessage.cjs +37 -0
- package/src/lib/functions/signMessage/signMessage.d.ts +24 -0
- package/src/lib/functions/signMessage/signMessage.js +33 -0
- package/src/lib/functions/signSolanaMessage/index.d.ts +1 -0
- package/src/lib/functions/signSolanaMessage/signSolanaMessage.cjs +31 -0
- package/src/lib/functions/signSolanaMessage/signSolanaMessage.d.ts +9 -0
- package/src/lib/functions/signSolanaMessage/signSolanaMessage.js +27 -0
- package/src/lib/functions/switchEthereumNetwork/index.d.ts +1 -0
- package/src/lib/functions/switchEthereumNetwork/switchEthereumNetwork.cjs +45 -0
- package/src/lib/functions/switchEthereumNetwork/switchEthereumNetwork.d.ts +12 -0
- package/src/lib/functions/switchEthereumNetwork/switchEthereumNetwork.js +41 -0
- package/src/lib/functions/switchNetwork/index.d.ts +1 -0
- package/src/lib/functions/switchNetwork/switchNetwork.cjs +33 -0
- package/src/lib/functions/switchNetwork/switchNetwork.d.ts +11 -0
- package/src/lib/functions/switchNetwork/switchNetwork.js +29 -0
- package/src/lib/solana/functions/convertBaseWalletToWalletAccount/convertBaseWalletToWalletAccount.d.ts +1 -1
- package/src/lib/solana/functions/createSolanaSignAndSendTransactionFeature/createSolanaSignAndSendTransactionFeature.cjs +10 -2
- package/src/lib/solana/functions/createSolanaSignAndSendTransactionFeature/createSolanaSignAndSendTransactionFeature.d.ts +1 -1
- package/src/lib/solana/functions/createSolanaSignAndSendTransactionFeature/createSolanaSignAndSendTransactionFeature.js +10 -2
- package/src/lib/solana/functions/createSolanaSignMessageFeature/createSolanaSignMessageFeature.cjs +10 -2
- package/src/lib/solana/functions/createSolanaSignMessageFeature/createSolanaSignMessageFeature.d.ts +1 -1
- package/src/lib/solana/functions/createSolanaSignMessageFeature/createSolanaSignMessageFeature.js +10 -2
- package/src/lib/solana/functions/createSolanaSignTransactionFeature/createSolanaSignTransactionFeature.cjs +10 -2
- package/src/lib/solana/functions/createSolanaSignTransactionFeature/createSolanaSignTransactionFeature.d.ts +1 -1
- package/src/lib/solana/functions/createSolanaSignTransactionFeature/createSolanaSignTransactionFeature.js +10 -2
- package/src/lib/solana/functions/createSolanaWallet/createSolanaWallet.cjs +2 -1
- package/src/lib/solana/functions/createSolanaWallet/createSolanaWallet.d.ts +1 -1
- package/src/lib/solana/functions/createSolanaWallet/createSolanaWallet.js +2 -1
- package/src/lib/solana/functions/createStandardConnectFeature/createStandardConnectFeature.cjs +5 -3
- package/src/lib/solana/functions/createStandardConnectFeature/createStandardConnectFeature.d.ts +1 -1
- package/src/lib/solana/functions/createStandardConnectFeature/createStandardConnectFeature.js +5 -3
- package/src/lib/solana/functions/createStandardDisconnectFeature/createStandardDisconnectFeature.cjs +2 -1
- package/src/lib/solana/functions/createStandardDisconnectFeature/createStandardDisconnectFeature.d.ts +1 -1
- package/src/lib/solana/functions/createStandardDisconnectFeature/createStandardDisconnectFeature.js +2 -1
- package/src/lib/solana/functions/createStandardEventsFeature/createStandardEventsFeature.cjs +5 -3
- package/src/lib/solana/functions/createStandardEventsFeature/createStandardEventsFeature.d.ts +1 -1
- package/src/lib/solana/functions/createStandardEventsFeature/createStandardEventsFeature.js +5 -3
- package/src/lib/solana/functions/getSolanaChains/getSolanaChains.cjs +5 -2
- package/src/lib/solana/functions/getSolanaChains/getSolanaChains.d.ts +1 -1
- package/src/lib/solana/functions/getSolanaChains/getSolanaChains.js +5 -2
- package/src/lib/actions/connectAction/createConnectAction.d.ts +0 -11
- package/src/lib/actions/connectAction/index.d.ts +0 -1
- package/src/lib/actions/disconnectAction/createDisconnectAction.cjs +0 -14
- package/src/lib/actions/disconnectAction/createDisconnectAction.d.ts +0 -7
- package/src/lib/actions/disconnectAction/createDisconnectAction.js +0 -10
- package/src/lib/actions/disconnectAction/index.d.ts +0 -1
- package/src/lib/createGlobalWalletClient.cjs +0 -69
- package/src/lib/createGlobalWalletClient.d.ts +0 -61
- package/src/lib/createGlobalWalletClient.js +0 -65
- package/src/lib/ethereum/functions/isNetworkSupported/index.d.ts +0 -1
- package/src/lib/ethereum/functions/isNetworkSupported/isNetworkSupported.cjs +0 -8
- package/src/lib/ethereum/functions/isNetworkSupported/isNetworkSupported.d.ts +0 -4
- package/src/lib/ethereum/functions/isNetworkSupported/isNetworkSupported.js +0 -4
- package/src/lib/functions/createClientEventEmitter/createClientEventEmitter.cjs +0 -10
- package/src/lib/functions/createClientEventEmitter/createClientEventEmitter.d.ts +0 -6
- package/src/lib/functions/createClientEventEmitter/createClientEventEmitter.js +0 -6
- package/src/lib/functions/createClientEventEmitter/index.d.ts +0 -1
- package/src/lib/functions/createEthereumModule/createEthereumModule.cjs +0 -24
- package/src/lib/functions/createEthereumModule/createEthereumModule.d.ts +0 -12
- package/src/lib/functions/createEthereumModule/createEthereumModule.js +0 -20
- package/src/lib/functions/createEthereumModule/index.d.ts +0 -1
- package/src/lib/functions/createSolanaModule/createSolanaModule.cjs +0 -17
- package/src/lib/functions/createSolanaModule/createSolanaModule.d.ts +0 -9
- package/src/lib/functions/createSolanaModule/createSolanaModule.js +0 -13
- package/src/lib/functions/createSolanaModule/index.d.ts +0 -1
- package/src/lib/store/createClientStore.cjs +0 -102
- package/src/lib/store/createClientStore.d.ts +0 -75
- package/src/lib/store/createClientStore.js +0 -98
- package/src/lib/store/index.d.ts +0 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
class NetworkNotSupportedError extends Error {
|
|
7
|
+
constructor(network, supportedNetworks) {
|
|
8
|
+
const supportedNetworksString = supportedNetworks
|
|
9
|
+
.map((n) => `- ${n}`)
|
|
10
|
+
.join('\n');
|
|
11
|
+
super(`Network not supported ${network}
|
|
12
|
+
|
|
13
|
+
The following networks are supported:
|
|
14
|
+
${supportedNetworksString}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
exports.NetworkNotSupportedError = NetworkNotSupportedError;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
class NetworkNotSupportedError extends Error {
|
|
3
|
+
constructor(network, supportedNetworks) {
|
|
4
|
+
const supportedNetworksString = supportedNetworks
|
|
5
|
+
.map((n) => `- ${n}`)
|
|
6
|
+
.join('\n');
|
|
7
|
+
super(`Network not supported ${network}
|
|
8
|
+
|
|
9
|
+
The following networks are supported:
|
|
10
|
+
${supportedNetworksString}`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { NetworkNotSupportedError };
|
|
@@ -6,22 +6,35 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
6
6
|
var _tslib = require('../../../../../_virtual/_tslib.cjs');
|
|
7
7
|
var viem = require('viem');
|
|
8
8
|
var eventemitter3 = require('eventemitter3');
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
require('@dynamic-labs/logger');
|
|
10
|
+
require('@dynamic-labs/store');
|
|
11
|
+
require('@dynamic-labs/utils');
|
|
12
12
|
var logger = require('../../../constants/logger.cjs');
|
|
13
|
+
var DisconnectError = require('../../../errors/DisconnectError.cjs');
|
|
14
|
+
var PopupClosedError = require('../../../errors/PopupClosedError.cjs');
|
|
15
|
+
var onEvent = require('../../../functions/onEvent/onEvent.cjs');
|
|
16
|
+
var disconnect = require('../../../functions/disconnect/disconnect.cjs');
|
|
17
|
+
var getCore = require('../../../client/getCore/getCore.cjs');
|
|
18
|
+
var isEthereumNetworkSupported = require('../../../functions/isEthereumNetworkSupported/isEthereumNetworkSupported.cjs');
|
|
19
|
+
var connect = require('../../../functions/connect/connect.cjs');
|
|
20
|
+
var isEthereumWallet = require('../../../functions/isEthereumWallet/isEthereumWallet.cjs');
|
|
21
|
+
var getCurrentEthereumNetworkId = require('../../../functions/getCurrentEthereumNetworkId/getCurrentEthereumNetworkId.cjs');
|
|
22
|
+
var getEthereumWallets = require('../../../functions/getEthereumWallets/getEthereumWallets.cjs');
|
|
23
|
+
var getSupportedEthereumNetworks = require('../../../functions/getSupportedEthereumNetworks/getSupportedEthereumNetworks.cjs');
|
|
24
|
+
var switchEthereumNetwork = require('../../../functions/switchEthereumNetwork/switchEthereumNetwork.cjs');
|
|
25
|
+
var getActiveConnection = require('../../../functions/getActiveConnection/getActiveConnection.cjs');
|
|
13
26
|
|
|
14
27
|
const createEIP1193Provider = (client) => {
|
|
15
28
|
const eventEmitter = new eventemitter3.EventEmitter();
|
|
16
|
-
|
|
17
|
-
const currentNetwork = client
|
|
29
|
+
onEvent.onEvent(client, 'connect', () => {
|
|
30
|
+
const currentNetwork = getCurrentEthereumNetworkId.getCurrentEthereumNetworkId(client);
|
|
18
31
|
if (!currentNetwork)
|
|
19
32
|
return;
|
|
20
33
|
eventEmitter.emit('connect', {
|
|
21
34
|
chainId: viem.toHex(currentNetwork),
|
|
22
35
|
});
|
|
23
36
|
});
|
|
24
|
-
|
|
37
|
+
onEvent.onEvent(client, 'disconnect', () => {
|
|
25
38
|
eventEmitter.emit('disconnect', new viem.ProviderDisconnectedError(new Error('User disconnected')));
|
|
26
39
|
});
|
|
27
40
|
return {
|
|
@@ -58,7 +71,7 @@ const createEIP1193Provider = (client) => {
|
|
|
58
71
|
});
|
|
59
72
|
return result;
|
|
60
73
|
}
|
|
61
|
-
const currentNetwork = client.
|
|
74
|
+
const currentNetwork = getSupportedEthereumNetworks.getSupportedEthereumNetworks(client).find((network) => network.chainId === getCurrentEthereumNetworkId.getCurrentEthereumNetworkId(client));
|
|
62
75
|
if (currentNetwork === null || currentNetwork === void 0 ? void 0 : currentNetwork.rpcUrl) {
|
|
63
76
|
const result = yield viem.http(currentNetwork === null || currentNetwork === void 0 ? void 0 : currentNetwork.rpcUrl)({}).request({
|
|
64
77
|
method,
|
|
@@ -90,13 +103,11 @@ const createEIP1193Provider = (client) => {
|
|
|
90
103
|
};
|
|
91
104
|
// Utility functions
|
|
92
105
|
const isConnected = (client) => {
|
|
93
|
-
|
|
94
|
-
const wallets = (_b = (_a = client === null || client === void 0 ? void 0 : client.ethereum) === null || _a === void 0 ? void 0 : _a.wallets) !== null && _b !== void 0 ? _b : [];
|
|
106
|
+
const wallets = getEthereumWallets.getEthereumWallets(client);
|
|
95
107
|
return wallets.length > 0;
|
|
96
108
|
};
|
|
97
109
|
const getConnectedAddresses = (client) => {
|
|
98
|
-
|
|
99
|
-
const wallets = (_b = (_a = client === null || client === void 0 ? void 0 : client.ethereum) === null || _a === void 0 ? void 0 : _a.wallets) !== null && _b !== void 0 ? _b : [];
|
|
110
|
+
const wallets = getEthereumWallets.getEthereumWallets(client);
|
|
100
111
|
return wallets.map((wallet) => wallet.address);
|
|
101
112
|
};
|
|
102
113
|
// Method handlers
|
|
@@ -105,46 +116,47 @@ const handleEthRequestAccounts = (client) => {
|
|
|
105
116
|
if (isConnected(client)) {
|
|
106
117
|
return getConnectedAddresses(client);
|
|
107
118
|
}
|
|
108
|
-
return client
|
|
109
|
-
.
|
|
110
|
-
.then(({ address }) => [address])
|
|
119
|
+
return connect.connect(client)
|
|
120
|
+
.then((wallets) => wallets.filter(isEthereumWallet.isEthereumWallet).map((wallet) => wallet.address))
|
|
111
121
|
.catch(mapErrorToStandard);
|
|
112
122
|
};
|
|
113
123
|
const handleWalletRevokePermissions = (client) => {
|
|
114
|
-
|
|
124
|
+
disconnect.disconnect(client);
|
|
115
125
|
return null;
|
|
116
126
|
};
|
|
117
127
|
const handleEthChainId = (client) => {
|
|
118
|
-
|
|
119
|
-
|
|
128
|
+
const currentEthereumNetworkId = getCurrentEthereumNetworkId.getCurrentEthereumNetworkId(client);
|
|
129
|
+
if (currentEthereumNetworkId) {
|
|
130
|
+
return viem.toHex(currentEthereumNetworkId);
|
|
120
131
|
}
|
|
121
132
|
return null;
|
|
122
133
|
};
|
|
123
134
|
const handleWalletSwitchEthereumChain = (client, eventEmitter, params) => {
|
|
124
|
-
var _a, _b;
|
|
125
135
|
if (!Array.isArray(params) || params.length === 0 || !params[0].chainId) {
|
|
126
136
|
throw new Error('Invalid parameters for wallet_switchEthereumChain');
|
|
127
137
|
}
|
|
128
138
|
const [{ chainId }] = params;
|
|
129
|
-
const supportedNetworks = (
|
|
139
|
+
const supportedNetworks = getSupportedEthereumNetworks.getSupportedEthereumNetworks(client);
|
|
130
140
|
if (supportedNetworks.length === 0) {
|
|
131
141
|
throw new viem.SwitchChainError(new Error('No supported networks'));
|
|
132
142
|
}
|
|
133
|
-
if (!
|
|
143
|
+
if (!isEthereumNetworkSupported.isEthereumNetworkSupported(viem.fromHex(chainId, 'number'), supportedNetworks)) {
|
|
134
144
|
throw new viem.SwitchChainError(new Error('Chain not supported'));
|
|
135
145
|
}
|
|
136
|
-
|
|
146
|
+
switchEthereumNetwork.switchEthereumNetwork(client, { networkId: viem.fromHex(chainId, 'number') });
|
|
137
147
|
eventEmitter.emit('chainChanged', chainId);
|
|
138
148
|
return null;
|
|
139
149
|
};
|
|
140
150
|
const handleMethodInPopup = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ client, method, params, }) {
|
|
141
|
-
|
|
151
|
+
const currentEthereumNetworkId = getCurrentEthereumNetworkId.getCurrentEthereumNetworkId(client);
|
|
152
|
+
if (!currentEthereumNetworkId) {
|
|
142
153
|
throw new Error('No network id found');
|
|
143
154
|
}
|
|
144
|
-
const { data } = yield client
|
|
145
|
-
.
|
|
155
|
+
const { data } = yield getCore.getCore(client)
|
|
156
|
+
.request({
|
|
157
|
+
connection: getActiveConnection.getActiveConnection(client),
|
|
146
158
|
params: {
|
|
147
|
-
chainId:
|
|
159
|
+
chainId: currentEthereumNetworkId,
|
|
148
160
|
method,
|
|
149
161
|
params,
|
|
150
162
|
},
|
|
@@ -2,22 +2,35 @@
|
|
|
2
2
|
import { __awaiter } from '../../../../../_virtual/_tslib.js';
|
|
3
3
|
import { toHex, ProviderDisconnectedError, http, UnsupportedProviderMethodError, SwitchChainError, fromHex, UserRejectedRequestError } from 'viem';
|
|
4
4
|
import { EventEmitter } from 'eventemitter3';
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
5
|
+
import '@dynamic-labs/logger';
|
|
6
|
+
import '@dynamic-labs/store';
|
|
7
|
+
import '@dynamic-labs/utils';
|
|
8
8
|
import { logger } from '../../../constants/logger.js';
|
|
9
|
+
import { DisconnectError } from '../../../errors/DisconnectError.js';
|
|
10
|
+
import { PopupClosedError } from '../../../errors/PopupClosedError.js';
|
|
11
|
+
import { onEvent } from '../../../functions/onEvent/onEvent.js';
|
|
12
|
+
import { disconnect } from '../../../functions/disconnect/disconnect.js';
|
|
13
|
+
import { getCore } from '../../../client/getCore/getCore.js';
|
|
14
|
+
import { isEthereumNetworkSupported } from '../../../functions/isEthereumNetworkSupported/isEthereumNetworkSupported.js';
|
|
15
|
+
import { connect } from '../../../functions/connect/connect.js';
|
|
16
|
+
import { isEthereumWallet } from '../../../functions/isEthereumWallet/isEthereumWallet.js';
|
|
17
|
+
import { getCurrentEthereumNetworkId } from '../../../functions/getCurrentEthereumNetworkId/getCurrentEthereumNetworkId.js';
|
|
18
|
+
import { getEthereumWallets } from '../../../functions/getEthereumWallets/getEthereumWallets.js';
|
|
19
|
+
import { getSupportedEthereumNetworks } from '../../../functions/getSupportedEthereumNetworks/getSupportedEthereumNetworks.js';
|
|
20
|
+
import { switchEthereumNetwork } from '../../../functions/switchEthereumNetwork/switchEthereumNetwork.js';
|
|
21
|
+
import { getActiveConnection } from '../../../functions/getActiveConnection/getActiveConnection.js';
|
|
9
22
|
|
|
10
23
|
const createEIP1193Provider = (client) => {
|
|
11
24
|
const eventEmitter = new EventEmitter();
|
|
12
|
-
client
|
|
13
|
-
const currentNetwork = client
|
|
25
|
+
onEvent(client, 'connect', () => {
|
|
26
|
+
const currentNetwork = getCurrentEthereumNetworkId(client);
|
|
14
27
|
if (!currentNetwork)
|
|
15
28
|
return;
|
|
16
29
|
eventEmitter.emit('connect', {
|
|
17
30
|
chainId: toHex(currentNetwork),
|
|
18
31
|
});
|
|
19
32
|
});
|
|
20
|
-
client
|
|
33
|
+
onEvent(client, 'disconnect', () => {
|
|
21
34
|
eventEmitter.emit('disconnect', new ProviderDisconnectedError(new Error('User disconnected')));
|
|
22
35
|
});
|
|
23
36
|
return {
|
|
@@ -54,7 +67,7 @@ const createEIP1193Provider = (client) => {
|
|
|
54
67
|
});
|
|
55
68
|
return result;
|
|
56
69
|
}
|
|
57
|
-
const currentNetwork = client.
|
|
70
|
+
const currentNetwork = getSupportedEthereumNetworks(client).find((network) => network.chainId === getCurrentEthereumNetworkId(client));
|
|
58
71
|
if (currentNetwork === null || currentNetwork === void 0 ? void 0 : currentNetwork.rpcUrl) {
|
|
59
72
|
const result = yield http(currentNetwork === null || currentNetwork === void 0 ? void 0 : currentNetwork.rpcUrl)({}).request({
|
|
60
73
|
method,
|
|
@@ -86,13 +99,11 @@ const createEIP1193Provider = (client) => {
|
|
|
86
99
|
};
|
|
87
100
|
// Utility functions
|
|
88
101
|
const isConnected = (client) => {
|
|
89
|
-
|
|
90
|
-
const wallets = (_b = (_a = client === null || client === void 0 ? void 0 : client.ethereum) === null || _a === void 0 ? void 0 : _a.wallets) !== null && _b !== void 0 ? _b : [];
|
|
102
|
+
const wallets = getEthereumWallets(client);
|
|
91
103
|
return wallets.length > 0;
|
|
92
104
|
};
|
|
93
105
|
const getConnectedAddresses = (client) => {
|
|
94
|
-
|
|
95
|
-
const wallets = (_b = (_a = client === null || client === void 0 ? void 0 : client.ethereum) === null || _a === void 0 ? void 0 : _a.wallets) !== null && _b !== void 0 ? _b : [];
|
|
106
|
+
const wallets = getEthereumWallets(client);
|
|
96
107
|
return wallets.map((wallet) => wallet.address);
|
|
97
108
|
};
|
|
98
109
|
// Method handlers
|
|
@@ -101,46 +112,47 @@ const handleEthRequestAccounts = (client) => {
|
|
|
101
112
|
if (isConnected(client)) {
|
|
102
113
|
return getConnectedAddresses(client);
|
|
103
114
|
}
|
|
104
|
-
return client
|
|
105
|
-
.
|
|
106
|
-
.then(({ address }) => [address])
|
|
115
|
+
return connect(client)
|
|
116
|
+
.then((wallets) => wallets.filter(isEthereumWallet).map((wallet) => wallet.address))
|
|
107
117
|
.catch(mapErrorToStandard);
|
|
108
118
|
};
|
|
109
119
|
const handleWalletRevokePermissions = (client) => {
|
|
110
|
-
|
|
120
|
+
disconnect(client);
|
|
111
121
|
return null;
|
|
112
122
|
};
|
|
113
123
|
const handleEthChainId = (client) => {
|
|
114
|
-
|
|
115
|
-
|
|
124
|
+
const currentEthereumNetworkId = getCurrentEthereumNetworkId(client);
|
|
125
|
+
if (currentEthereumNetworkId) {
|
|
126
|
+
return toHex(currentEthereumNetworkId);
|
|
116
127
|
}
|
|
117
128
|
return null;
|
|
118
129
|
};
|
|
119
130
|
const handleWalletSwitchEthereumChain = (client, eventEmitter, params) => {
|
|
120
|
-
var _a, _b;
|
|
121
131
|
if (!Array.isArray(params) || params.length === 0 || !params[0].chainId) {
|
|
122
132
|
throw new Error('Invalid parameters for wallet_switchEthereumChain');
|
|
123
133
|
}
|
|
124
134
|
const [{ chainId }] = params;
|
|
125
|
-
const supportedNetworks = (
|
|
135
|
+
const supportedNetworks = getSupportedEthereumNetworks(client);
|
|
126
136
|
if (supportedNetworks.length === 0) {
|
|
127
137
|
throw new SwitchChainError(new Error('No supported networks'));
|
|
128
138
|
}
|
|
129
|
-
if (!
|
|
139
|
+
if (!isEthereumNetworkSupported(fromHex(chainId, 'number'), supportedNetworks)) {
|
|
130
140
|
throw new SwitchChainError(new Error('Chain not supported'));
|
|
131
141
|
}
|
|
132
|
-
client
|
|
142
|
+
switchEthereumNetwork(client, { networkId: fromHex(chainId, 'number') });
|
|
133
143
|
eventEmitter.emit('chainChanged', chainId);
|
|
134
144
|
return null;
|
|
135
145
|
};
|
|
136
146
|
const handleMethodInPopup = (_a) => __awaiter(void 0, [_a], void 0, function* ({ client, method, params, }) {
|
|
137
|
-
|
|
147
|
+
const currentEthereumNetworkId = getCurrentEthereumNetworkId(client);
|
|
148
|
+
if (!currentEthereumNetworkId) {
|
|
138
149
|
throw new Error('No network id found');
|
|
139
150
|
}
|
|
140
|
-
const { data } = yield client
|
|
141
|
-
.
|
|
151
|
+
const { data } = yield getCore(client)
|
|
152
|
+
.request({
|
|
153
|
+
connection: getActiveConnection(client),
|
|
142
154
|
params: {
|
|
143
|
-
chainId:
|
|
155
|
+
chainId: currentEthereumNetworkId,
|
|
144
156
|
method,
|
|
145
157
|
params,
|
|
146
158
|
},
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
require('eventemitter3');
|
|
7
|
+
require('@dynamic-labs/logger');
|
|
8
|
+
require('@dynamic-labs/store');
|
|
9
|
+
require('../../../../_virtual/_tslib.cjs');
|
|
10
|
+
require('@dynamic-labs/utils');
|
|
11
|
+
require('../../constants/logger.cjs');
|
|
12
|
+
require('../../errors/DisconnectError.cjs');
|
|
13
|
+
var getCore = require('../../client/getCore/getCore.cjs');
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Resets the store to its initial state
|
|
17
|
+
*/
|
|
18
|
+
const clearStore = (client) => {
|
|
19
|
+
const core = getCore.getCore(client);
|
|
20
|
+
core.logger.logVerboseTroubleshootingMessage('clear store');
|
|
21
|
+
core.store.setState(core.store.getInitialState());
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
exports.clearStore = clearStore;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import 'eventemitter3';
|
|
3
|
+
import '@dynamic-labs/logger';
|
|
4
|
+
import '@dynamic-labs/store';
|
|
5
|
+
import '../../../../_virtual/_tslib.js';
|
|
6
|
+
import '@dynamic-labs/utils';
|
|
7
|
+
import '../../constants/logger.js';
|
|
8
|
+
import '../../errors/DisconnectError.js';
|
|
9
|
+
import { getCore } from '../../client/getCore/getCore.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Resets the store to its initial state
|
|
13
|
+
*/
|
|
14
|
+
const clearStore = (client) => {
|
|
15
|
+
const core = getCore(client);
|
|
16
|
+
core.logger.logVerboseTroubleshootingMessage('clear store');
|
|
17
|
+
core.store.setState(core.store.getInitialState());
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export { clearStore };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { clearStore } from './clearStore';
|
package/src/lib/{actions/connectAction/createConnectAction.cjs → functions/connect/connect.cjs}
RENAMED
|
@@ -5,13 +5,37 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
|
|
6
6
|
var _tslib = require('../../../../_virtual/_tslib.cjs');
|
|
7
7
|
var utils = require('@dynamic-labs/utils');
|
|
8
|
+
require('eventemitter3');
|
|
9
|
+
require('@dynamic-labs/logger');
|
|
10
|
+
require('@dynamic-labs/store');
|
|
11
|
+
require('../../constants/logger.cjs');
|
|
12
|
+
require('../../errors/DisconnectError.cjs');
|
|
13
|
+
var clearStore = require('../clearStore/clearStore.cjs');
|
|
14
|
+
var getActiveConnection = require('../getActiveConnection/getActiveConnection.cjs');
|
|
15
|
+
var assignClient = require('../../client/assignClient/assignClient.cjs');
|
|
16
|
+
var getCore = require('../../client/getCore/getCore.cjs');
|
|
17
|
+
var setInitialConnectionState = require('../setInitialConnectionState/setInitialConnectionState.cjs');
|
|
8
18
|
|
|
9
|
-
|
|
10
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Connects the global wallet to the dapp.
|
|
21
|
+
*
|
|
22
|
+
* @param client - The global wallet client.
|
|
23
|
+
*
|
|
24
|
+
* @returns The connected wallets.
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* import { Wallet } from 'wallet';
|
|
28
|
+
*
|
|
29
|
+
* const connectedWallets = await connect(wallet);
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
const connect = (client) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
33
|
+
const core = getCore.getCore(client);
|
|
34
|
+
clearStore.clearStore(client);
|
|
11
35
|
const keyPair = yield utils.createKeyPair();
|
|
12
|
-
const data = yield
|
|
36
|
+
const data = yield core.request({
|
|
37
|
+
connection: getActiveConnection.getActiveConnection(client),
|
|
13
38
|
params: {
|
|
14
|
-
chain,
|
|
15
39
|
receiver_public_key: yield utils.convertPublicKeyCryptoKeyToHex(keyPair.publicKey),
|
|
16
40
|
},
|
|
17
41
|
pathname: 'connect',
|
|
@@ -20,7 +44,7 @@ const createConnectAction = ({ store, openPopup, onConnect }) => (_a) => _tslib.
|
|
|
20
44
|
const sharedSecret = yield utils.deriveSharedSecret(keyPair.privateKey, yield utils.convertPublicKeyHexToCryptoKey(providerPublicKey));
|
|
21
45
|
const message = yield utils.decryptMessage(sharedSecret, encryptedMessage, iv);
|
|
22
46
|
const { ethereum, solana, wallets } = JSON.parse(message);
|
|
23
|
-
|
|
47
|
+
setInitialConnectionState.setInitialConnectionState(client, {
|
|
24
48
|
connection: {
|
|
25
49
|
expiresAt,
|
|
26
50
|
// TODO: use PlatformService
|
|
@@ -40,12 +64,8 @@ const createConnectAction = ({ store, openPopup, onConnect }) => (_a) => _tslib.
|
|
|
40
64
|
: null,
|
|
41
65
|
wallets,
|
|
42
66
|
});
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (!wallet) {
|
|
46
|
-
throw new Error('Wallet not found');
|
|
47
|
-
}
|
|
48
|
-
return wallet;
|
|
67
|
+
core.eventEmitter.emit('connect');
|
|
68
|
+
return wallets.map((wallet) => assignClient.assignClient(wallet, client));
|
|
49
69
|
});
|
|
50
70
|
|
|
51
|
-
exports.
|
|
71
|
+
exports.connect = connect;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { GlobalWalletClient } from '../../client';
|
|
2
|
+
/**
|
|
3
|
+
* Connects the global wallet to the dapp.
|
|
4
|
+
*
|
|
5
|
+
* @param client - The global wallet client.
|
|
6
|
+
*
|
|
7
|
+
* @returns The connected wallets.
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { Wallet } from 'wallet';
|
|
11
|
+
*
|
|
12
|
+
* const connectedWallets = await connect(wallet);
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare const connect: (client: GlobalWalletClient) => Promise<import("@dynamic-labs/types").BaseWallet[]>;
|
package/src/lib/{actions/connectAction/createConnectAction.js → functions/connect/connect.js}
RENAMED
|
@@ -1,13 +1,37 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { __awaiter } from '../../../../_virtual/_tslib.js';
|
|
3
3
|
import { createKeyPair, convertPublicKeyCryptoKeyToHex, deriveSharedSecret, convertPublicKeyHexToCryptoKey, decryptMessage } from '@dynamic-labs/utils';
|
|
4
|
+
import 'eventemitter3';
|
|
5
|
+
import '@dynamic-labs/logger';
|
|
6
|
+
import '@dynamic-labs/store';
|
|
7
|
+
import '../../constants/logger.js';
|
|
8
|
+
import '../../errors/DisconnectError.js';
|
|
9
|
+
import { clearStore } from '../clearStore/clearStore.js';
|
|
10
|
+
import { getActiveConnection } from '../getActiveConnection/getActiveConnection.js';
|
|
11
|
+
import { assignClient } from '../../client/assignClient/assignClient.js';
|
|
12
|
+
import { getCore } from '../../client/getCore/getCore.js';
|
|
13
|
+
import { setInitialConnectionState } from '../setInitialConnectionState/setInitialConnectionState.js';
|
|
4
14
|
|
|
5
|
-
|
|
6
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Connects the global wallet to the dapp.
|
|
17
|
+
*
|
|
18
|
+
* @param client - The global wallet client.
|
|
19
|
+
*
|
|
20
|
+
* @returns The connected wallets.
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { Wallet } from 'wallet';
|
|
24
|
+
*
|
|
25
|
+
* const connectedWallets = await connect(wallet);
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
const connect = (client) => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
|
+
const core = getCore(client);
|
|
30
|
+
clearStore(client);
|
|
7
31
|
const keyPair = yield createKeyPair();
|
|
8
|
-
const data = yield
|
|
32
|
+
const data = yield core.request({
|
|
33
|
+
connection: getActiveConnection(client),
|
|
9
34
|
params: {
|
|
10
|
-
chain,
|
|
11
35
|
receiver_public_key: yield convertPublicKeyCryptoKeyToHex(keyPair.publicKey),
|
|
12
36
|
},
|
|
13
37
|
pathname: 'connect',
|
|
@@ -16,7 +40,7 @@ const createConnectAction = ({ store, openPopup, onConnect }) => (_a) => __await
|
|
|
16
40
|
const sharedSecret = yield deriveSharedSecret(keyPair.privateKey, yield convertPublicKeyHexToCryptoKey(providerPublicKey));
|
|
17
41
|
const message = yield decryptMessage(sharedSecret, encryptedMessage, iv);
|
|
18
42
|
const { ethereum, solana, wallets } = JSON.parse(message);
|
|
19
|
-
|
|
43
|
+
setInitialConnectionState(client, {
|
|
20
44
|
connection: {
|
|
21
45
|
expiresAt,
|
|
22
46
|
// TODO: use PlatformService
|
|
@@ -36,12 +60,8 @@ const createConnectAction = ({ store, openPopup, onConnect }) => (_a) => __await
|
|
|
36
60
|
: null,
|
|
37
61
|
wallets,
|
|
38
62
|
});
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (!wallet) {
|
|
42
|
-
throw new Error('Wallet not found');
|
|
43
|
-
}
|
|
44
|
-
return wallet;
|
|
63
|
+
core.eventEmitter.emit('connect');
|
|
64
|
+
return wallets.map((wallet) => assignClient(wallet, client));
|
|
45
65
|
});
|
|
46
66
|
|
|
47
|
-
export {
|
|
67
|
+
export { connect };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { connect } from './connect';
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
export type PopupMessageClient<T extends Record<string, (...args: any[]) => void>> = {
|
|
2
|
+
listenForMessage: <TMessageName extends keyof T = keyof T>(messageName: TMessageName, callback: (...args: Parameters<T[TMessageName]>) => void) => VoidFunction;
|
|
3
|
+
waitForMessage: <TMessageName extends keyof T = keyof T>(messageName: TMessageName, timeout?: number) => Promise<Parameters<T[TMessageName]>>;
|
|
4
|
+
postMessage: <TMessageName extends keyof T = keyof T>(messageName: TMessageName, ...args: Parameters<T[TMessageName]>) => Promise<void>;
|
|
5
|
+
};
|
|
1
6
|
export type RawMessage = {
|
|
2
7
|
name: string;
|
|
3
8
|
args: unknown[];
|
|
@@ -6,9 +11,4 @@ export type MessageEncoder = {
|
|
|
6
11
|
encode: (message: RawMessage) => Promise<any>;
|
|
7
12
|
decode: (data: any) => Promise<RawMessage>;
|
|
8
13
|
};
|
|
9
|
-
export declare const createPopupMessageClient: <T extends Record<string, (...args: any[]) => void>>(popupWindow: Window, targetOrigin: string, messageEncoder?: MessageEncoder) =>
|
|
10
|
-
listenForMessage: <TMessageName extends keyof T = keyof T>(messageName: TMessageName, callback: (...args: Parameters<T[TMessageName]>) => void) => VoidFunction;
|
|
11
|
-
postMessage: <TMessageName_1 extends keyof T = keyof T>(messageName: TMessageName_1, ...args: Parameters<T[TMessageName_1]>) => Promise<void>;
|
|
12
|
-
waitForMessage: <TMessageName_2 extends keyof T = keyof T>(messageName: TMessageName_2, timeout?: number) => Promise<Parameters<T[TMessageName_2]>>;
|
|
13
|
-
};
|
|
14
|
-
export type PopupMessageClient<TMessage extends Record<string, (...args: any[]) => void>> = ReturnType<typeof createPopupMessageClient<TMessage>>;
|
|
14
|
+
export declare const createPopupMessageClient: <T extends Record<string, (...args: any[]) => void>>(popupWindow: Window, targetOrigin: string, messageEncoder?: MessageEncoder) => PopupMessageClient<T>;
|
|
@@ -12,7 +12,7 @@ var getCenteredPopupFeatures = require('../getCenteredPopupFeatures/getCenteredP
|
|
|
12
12
|
var PopupClosedError = require('../../errors/PopupClosedError.cjs');
|
|
13
13
|
var logger = require('../../constants/logger.cjs');
|
|
14
14
|
|
|
15
|
-
const createPopupOpener = ({ environmentId, popupUrl, popupWidth = 420, popupHeight = 640,
|
|
15
|
+
const createPopupOpener = ({ environmentId, popupUrl, popupWidth = 420, popupHeight = 640, popupActionTimeout = 1000, // Wait page up to 1 second for new actions before closing
|
|
16
16
|
onError, }) => {
|
|
17
17
|
let popup = null;
|
|
18
18
|
let didOpenPopup = false;
|
|
@@ -24,7 +24,7 @@ onError, }) => {
|
|
|
24
24
|
didOpenPopup = false;
|
|
25
25
|
lastActionId = null;
|
|
26
26
|
};
|
|
27
|
-
return (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ params, pathname, }) {
|
|
27
|
+
return (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ params, pathname, connection, }) {
|
|
28
28
|
logger.logger.logVerboseTroubleshootingMessage('new popup action', {
|
|
29
29
|
params,
|
|
30
30
|
pathname,
|
|
@@ -33,7 +33,6 @@ onError, }) => {
|
|
|
33
33
|
const actionId = new Date().getTime();
|
|
34
34
|
lastActionId = actionId;
|
|
35
35
|
const popupFinalUrl = new URL(popupUrl);
|
|
36
|
-
const activeConnection = store.getActiveConnection();
|
|
37
36
|
const resultDeferredPromise = new utils.DeferredPromise();
|
|
38
37
|
// Setup popup URL and data
|
|
39
38
|
popupFinalUrl.hash = `/${pathname}`;
|
|
@@ -50,15 +49,15 @@ onError, }) => {
|
|
|
50
49
|
}
|
|
51
50
|
// Encrypt params if active connection is present
|
|
52
51
|
if (params) {
|
|
53
|
-
yield mergeAndEncryptParams.mergeAndEncryptParams(popupFinalUrl, params,
|
|
52
|
+
yield mergeAndEncryptParams.mergeAndEncryptParams(popupFinalUrl, params, connection);
|
|
54
53
|
}
|
|
55
54
|
if (popup === null) {
|
|
56
55
|
throw new Error('Failed to open popup');
|
|
57
56
|
}
|
|
58
57
|
waitForPopupResponse.waitForPopupResponse({
|
|
59
58
|
decode: (data) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
60
|
-
if (
|
|
61
|
-
const decryptedData = yield utils.decryptMessage(
|
|
59
|
+
if (connection && utils.isEncryptedMessage(data)) {
|
|
60
|
+
const decryptedData = yield utils.decryptMessage(connection.sharedSecret, data.encryptedMessage, data.iv);
|
|
62
61
|
return JSON.parse(decryptedData);
|
|
63
62
|
}
|
|
64
63
|
return data;
|
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
import { GetPopupActionFuncArgs, GetPopupActionName, GetPopupActionResult, IPopupAction } from '@dynamic-labs/types';
|
|
2
|
-
|
|
1
|
+
import { GetPopupActionFuncArgs, GetPopupActionName, GetPopupActionResult, GlobalWalletConnection, IPopupAction } from '@dynamic-labs/types';
|
|
2
|
+
export type PopupOpener = <TPopupAction extends IPopupAction>(props: OpenPopupProps<TPopupAction>) => Promise<GetPopupActionResult<TPopupAction>>;
|
|
3
3
|
type CreatePopupOpenerProps = {
|
|
4
4
|
environmentId: string;
|
|
5
5
|
popupUrl: string;
|
|
6
6
|
popupWidth?: number;
|
|
7
7
|
popupHeight?: number;
|
|
8
|
-
store: ClientStore;
|
|
9
8
|
popupActionTimeout?: number;
|
|
10
9
|
onError?: (error: Error) => void;
|
|
11
10
|
};
|
|
12
11
|
type OpenPopupProps<TAction extends IPopupAction> = {
|
|
13
12
|
params: GetPopupActionFuncArgs<TAction>;
|
|
14
13
|
pathname: GetPopupActionName<TAction>;
|
|
14
|
+
connection: GlobalWalletConnection | null;
|
|
15
15
|
};
|
|
16
|
-
export declare const createPopupOpener: ({ environmentId, popupUrl, popupWidth, popupHeight,
|
|
17
|
-
export type OpenPopup = ReturnType<typeof createPopupOpener>;
|
|
16
|
+
export declare const createPopupOpener: ({ environmentId, popupUrl, popupWidth, popupHeight, popupActionTimeout, onError, }: CreatePopupOpenerProps) => PopupOpener;
|
|
18
17
|
export {};
|