@dynamic-labs/sdk-react-core 0.18.100-viem.14 → 0.18.100-viem.15
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 +7 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +8 -8
- package/src/lib/context/DynamicContext/helpers.cjs +28 -1
- package/src/lib/context/DynamicContext/helpers.d.ts +3 -0
- package/src/lib/context/DynamicContext/helpers.js +26 -2
- package/src/lib/data/api.cjs +7 -0
- package/src/lib/data/api.js +7 -0
- package/src/lib/utils/constants/localStorage.cjs +2 -0
- package/src/lib/utils/constants/localStorage.d.ts +1 -0
- package/src/lib/utils/constants/localStorage.js +2 -1
- package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.cjs +7 -23
- package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.js +8 -24
- package/src/lib/utils/hooks/useHandleWalletsToConnect/useHandleWalletsToConnect.cjs +15 -1
- package/src/lib/utils/hooks/useHandleWalletsToConnect/useHandleWalletsToConnect.js +15 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
|
|
2
|
+
### [0.18.100-viem.15](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.100-viem.14...v0.18.100-viem.15) (2023-09-11)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
* sdkSettings should call once per session ([#3189](https://github.com/dynamic-labs/DynamicAuth/issues/3189)) ([#3265](https://github.com/dynamic-labs/DynamicAuth/issues/3265)) ([f46a692](https://github.com/dynamic-labs/DynamicAuth/commit/f46a6927684caf5962e5b60a9927030a5f7720e2))
|
|
7
|
+
* wallet transition in the bridge ([#3268](https://github.com/dynamic-labs/DynamicAuth/issues/3268)) ([#3271](https://github.com/dynamic-labs/DynamicAuth/issues/3271)) ([95e6d5f](https://github.com/dynamic-labs/DynamicAuth/commit/95e6d5f6ff003ff428795bdd73e2d88da366ed56)), closes [#3243](https://github.com/dynamic-labs/DynamicAuth/issues/3243)
|
|
8
|
+
|
|
2
9
|
### [0.18.100-viem.14](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.100-viem.13...v0.18.100-viem.14) (2023-09-05)
|
|
3
10
|
|
|
4
11
|
|
package/package.cjs
CHANGED
package/package.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/sdk-react-core",
|
|
3
|
-
"version": "0.18.100-viem.
|
|
3
|
+
"version": "0.18.100-viem.15",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/dynamic-labs/DynamicAuth.git",
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
"yup": "0.32.11",
|
|
16
16
|
"formik": "2.2.9",
|
|
17
17
|
"qrcode": "1.5.1",
|
|
18
|
-
"@dynamic-labs/logger": "0.18.100-viem.
|
|
19
|
-
"@dynamic-labs/multi-wallet": "0.18.100-viem.
|
|
20
|
-
"@dynamic-labs/rpc-providers": "0.18.100-viem.
|
|
21
|
-
"@dynamic-labs/types": "0.18.100-viem.
|
|
22
|
-
"@dynamic-labs/utils": "0.18.100-viem.
|
|
23
|
-
"@dynamic-labs/wallet-book": "0.18.100-viem.
|
|
24
|
-
"@dynamic-labs/wallet-connector-core": "0.18.100-viem.
|
|
18
|
+
"@dynamic-labs/logger": "0.18.100-viem.15",
|
|
19
|
+
"@dynamic-labs/multi-wallet": "0.18.100-viem.15",
|
|
20
|
+
"@dynamic-labs/rpc-providers": "0.18.100-viem.15",
|
|
21
|
+
"@dynamic-labs/types": "0.18.100-viem.15",
|
|
22
|
+
"@dynamic-labs/utils": "0.18.100-viem.15",
|
|
23
|
+
"@dynamic-labs/wallet-book": "0.18.100-viem.15",
|
|
24
|
+
"@dynamic-labs/wallet-connector-core": "0.18.100-viem.15",
|
|
25
25
|
"eventemitter3": "5.0.1"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
@@ -11,12 +11,15 @@ require('react');
|
|
|
11
11
|
require('../../shared/logger.cjs');
|
|
12
12
|
require('@dynamic-labs/wallet-book');
|
|
13
13
|
require('@dynamic-labs/utils');
|
|
14
|
+
var localStorage$1 = require('../../utils/constants/localStorage.cjs');
|
|
14
15
|
require('../../utils/constants/colors.cjs');
|
|
15
|
-
require('../../shared/utils/classes/storage/localStorage.cjs');
|
|
16
|
+
var localStorage = require('../../shared/utils/classes/storage/localStorage.cjs');
|
|
16
17
|
require('viem');
|
|
17
18
|
var getAuthToken = require('../../utils/functions/getAuthToken/getAuthToken.cjs');
|
|
18
19
|
|
|
19
20
|
let logoutTimer;
|
|
21
|
+
let sdkSettingsTimer;
|
|
22
|
+
const sdkSettingsTimeout = 24 * 60 * 60 * 1000; // 24 hours
|
|
20
23
|
const isAuthTokenExpired = (token) => {
|
|
21
24
|
const decoded = decodeJwt.decodeJwt(token);
|
|
22
25
|
if (!decoded) {
|
|
@@ -66,7 +69,31 @@ const getInitialView = ({ connectedWallets, loginWithEmail, isBridgeFlow, isFull
|
|
|
66
69
|
}
|
|
67
70
|
return 'wallet-list';
|
|
68
71
|
};
|
|
72
|
+
const setSDKSessionSettings = () => {
|
|
73
|
+
const timestamp = new Date().getTime();
|
|
74
|
+
localStorage.LocalStorage.setToLS(localStorage$1.SDK_LAST_SESSION_SETTINGS, timestamp.toString());
|
|
75
|
+
sdkSettingsTimer = setTimeout(isSDKSessionSettingExpired, sdkSettingsTimeout);
|
|
76
|
+
};
|
|
77
|
+
const isSDKSessionSettingExpired = () => {
|
|
78
|
+
const lastSentTime = localStorage.LocalStorage.getFromLS(localStorage$1.SDK_LAST_SESSION_SETTINGS);
|
|
79
|
+
// should set new time
|
|
80
|
+
if (!lastSentTime) {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
const lastSentTimestamp = parseInt(lastSentTime);
|
|
84
|
+
const currentTime = new Date().getTime();
|
|
85
|
+
if (currentTime - lastSentTimestamp > sdkSettingsTimeout) {
|
|
86
|
+
// Reset session-related data here
|
|
87
|
+
clearTimeout(sdkSettingsTimer);
|
|
88
|
+
localStorage.LocalStorage.removeFromLS(localStorage$1.SDK_LAST_SESSION_SETTINGS);
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
return false;
|
|
92
|
+
};
|
|
69
93
|
|
|
70
94
|
exports.getInitialView = getInitialView;
|
|
71
95
|
exports.initExpirationTime = initExpirationTime;
|
|
72
96
|
exports.isAuthTokenExpired = isAuthTokenExpired;
|
|
97
|
+
exports.isSDKSessionSettingExpired = isSDKSessionSettingExpired;
|
|
98
|
+
exports.sdkSettingsTimeout = sdkSettingsTimeout;
|
|
99
|
+
exports.setSDKSessionSettings = setSDKSessionSettings;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Wallet } from '../../shared';
|
|
2
2
|
import { ViewType } from '../ViewContext';
|
|
3
|
+
export declare const sdkSettingsTimeout: number;
|
|
3
4
|
export declare const isAuthTokenExpired: (token: string) => boolean;
|
|
4
5
|
export declare const initExpirationTime: (logout: VoidFunction) => void;
|
|
5
6
|
export declare const getInitialView: ({ connectedWallets, loginWithEmail, isBridgeFlow, isFullyConnected, isMultiWalletEnabled, }: {
|
|
@@ -9,3 +10,5 @@ export declare const getInitialView: ({ connectedWallets, loginWithEmail, isBrid
|
|
|
9
10
|
isFullyConnected: boolean;
|
|
10
11
|
isMultiWalletEnabled: boolean;
|
|
11
12
|
}) => ViewType;
|
|
13
|
+
export declare const setSDKSessionSettings: () => void;
|
|
14
|
+
export declare const isSDKSessionSettingExpired: () => boolean;
|
|
@@ -7,12 +7,15 @@ import 'react';
|
|
|
7
7
|
import '../../shared/logger.js';
|
|
8
8
|
import '@dynamic-labs/wallet-book';
|
|
9
9
|
import '@dynamic-labs/utils';
|
|
10
|
+
import { SDK_LAST_SESSION_SETTINGS } from '../../utils/constants/localStorage.js';
|
|
10
11
|
import '../../utils/constants/colors.js';
|
|
11
|
-
import '../../shared/utils/classes/storage/localStorage.js';
|
|
12
|
+
import { LocalStorage } from '../../shared/utils/classes/storage/localStorage.js';
|
|
12
13
|
import 'viem';
|
|
13
14
|
import { getAuthToken } from '../../utils/functions/getAuthToken/getAuthToken.js';
|
|
14
15
|
|
|
15
16
|
let logoutTimer;
|
|
17
|
+
let sdkSettingsTimer;
|
|
18
|
+
const sdkSettingsTimeout = 24 * 60 * 60 * 1000; // 24 hours
|
|
16
19
|
const isAuthTokenExpired = (token) => {
|
|
17
20
|
const decoded = decodeJwt(token);
|
|
18
21
|
if (!decoded) {
|
|
@@ -62,5 +65,26 @@ const getInitialView = ({ connectedWallets, loginWithEmail, isBridgeFlow, isFull
|
|
|
62
65
|
}
|
|
63
66
|
return 'wallet-list';
|
|
64
67
|
};
|
|
68
|
+
const setSDKSessionSettings = () => {
|
|
69
|
+
const timestamp = new Date().getTime();
|
|
70
|
+
LocalStorage.setToLS(SDK_LAST_SESSION_SETTINGS, timestamp.toString());
|
|
71
|
+
sdkSettingsTimer = setTimeout(isSDKSessionSettingExpired, sdkSettingsTimeout);
|
|
72
|
+
};
|
|
73
|
+
const isSDKSessionSettingExpired = () => {
|
|
74
|
+
const lastSentTime = LocalStorage.getFromLS(SDK_LAST_SESSION_SETTINGS);
|
|
75
|
+
// should set new time
|
|
76
|
+
if (!lastSentTime) {
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
const lastSentTimestamp = parseInt(lastSentTime);
|
|
80
|
+
const currentTime = new Date().getTime();
|
|
81
|
+
if (currentTime - lastSentTimestamp > sdkSettingsTimeout) {
|
|
82
|
+
// Reset session-related data here
|
|
83
|
+
clearTimeout(sdkSettingsTimer);
|
|
84
|
+
LocalStorage.removeFromLS(SDK_LAST_SESSION_SETTINGS);
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
return false;
|
|
88
|
+
};
|
|
65
89
|
|
|
66
|
-
export { getInitialView, initExpirationTime, isAuthTokenExpired };
|
|
90
|
+
export { getInitialView, initExpirationTime, isAuthTokenExpired, isSDKSessionSettingExpired, sdkSettingsTimeout, setSDKSessionSettings };
|
package/src/lib/data/api.cjs
CHANGED
|
@@ -18,6 +18,7 @@ require('../utils/constants/colors.cjs');
|
|
|
18
18
|
require('../shared/utils/classes/storage/localStorage.cjs');
|
|
19
19
|
require('viem');
|
|
20
20
|
require('../shared/consts/index.cjs');
|
|
21
|
+
var helpers = require('../context/DynamicContext/helpers.cjs');
|
|
21
22
|
|
|
22
23
|
const sdkApi = (jwt) => {
|
|
23
24
|
const settings = {
|
|
@@ -400,6 +401,11 @@ const getOnrampProviders = ({ chain, environmentId, networkId, token, walletAddr
|
|
|
400
401
|
});
|
|
401
402
|
const sendDynamicProps = (environmentId, settingsToSend) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
402
403
|
try {
|
|
404
|
+
const isSettingsExpired = helpers.isSDKSessionSettingExpired();
|
|
405
|
+
// sent once. no need to send again
|
|
406
|
+
if (!isSettingsExpired) {
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
403
409
|
const { dynamicContextProps, dynamicWagmiSettings } = settingsToSend;
|
|
404
410
|
if (dynamicContextProps || dynamicWagmiSettings) {
|
|
405
411
|
yield sdkApi().logDynamicSdkSettings({
|
|
@@ -410,6 +416,7 @@ const sendDynamicProps = (environmentId, settingsToSend) => _tslib.__awaiter(voi
|
|
|
410
416
|
},
|
|
411
417
|
});
|
|
412
418
|
}
|
|
419
|
+
helpers.setSDKSessionSettings();
|
|
413
420
|
}
|
|
414
421
|
catch (e) {
|
|
415
422
|
logger.logger.error(e);
|
package/src/lib/data/api.js
CHANGED
|
@@ -14,6 +14,7 @@ import '../utils/constants/colors.js';
|
|
|
14
14
|
import '../shared/utils/classes/storage/localStorage.js';
|
|
15
15
|
import 'viem';
|
|
16
16
|
import '../shared/consts/index.js';
|
|
17
|
+
import { isSDKSessionSettingExpired, setSDKSessionSettings } from '../context/DynamicContext/helpers.js';
|
|
17
18
|
|
|
18
19
|
const sdkApi = (jwt) => {
|
|
19
20
|
const settings = {
|
|
@@ -396,6 +397,11 @@ const getOnrampProviders = ({ chain, environmentId, networkId, token, walletAddr
|
|
|
396
397
|
});
|
|
397
398
|
const sendDynamicProps = (environmentId, settingsToSend) => __awaiter(void 0, void 0, void 0, function* () {
|
|
398
399
|
try {
|
|
400
|
+
const isSettingsExpired = isSDKSessionSettingExpired();
|
|
401
|
+
// sent once. no need to send again
|
|
402
|
+
if (!isSettingsExpired) {
|
|
403
|
+
return;
|
|
404
|
+
}
|
|
399
405
|
const { dynamicContextProps, dynamicWagmiSettings } = settingsToSend;
|
|
400
406
|
if (dynamicContextProps || dynamicWagmiSettings) {
|
|
401
407
|
yield sdkApi().logDynamicSdkSettings({
|
|
@@ -406,6 +412,7 @@ const sendDynamicProps = (environmentId, settingsToSend) => __awaiter(void 0, vo
|
|
|
406
412
|
},
|
|
407
413
|
});
|
|
408
414
|
}
|
|
415
|
+
setSDKSessionSettings();
|
|
409
416
|
}
|
|
410
417
|
catch (e) {
|
|
411
418
|
logger.error(e);
|
|
@@ -16,6 +16,7 @@ const AUTH_MODE = 'dynamic_auth_mode';
|
|
|
16
16
|
const CONNECTED_WALLET_NAME_SERVICE = 'dynamic_connected_wallet_ns';
|
|
17
17
|
const IS_FULLY_CONNECTED = 'dynamic_fully_connected';
|
|
18
18
|
const IS_MULTI_WALLET_ENABLED = 'dynamic_multi_wallet_enabled';
|
|
19
|
+
const SDK_LAST_SESSION_SETTINGS = 'dynamic_session_settings';
|
|
19
20
|
|
|
20
21
|
exports.AUTH_MODE = AUTH_MODE;
|
|
21
22
|
exports.AUTH_TOKEN = AUTH_TOKEN;
|
|
@@ -30,4 +31,5 @@ exports.NEWTOWEB3_WALLET_EXTENSION_FLAG_KEY = NEWTOWEB3_WALLET_EXTENSION_FLAG_KE
|
|
|
30
31
|
exports.NONCE_STORAGE_KEY = NONCE_STORAGE_KEY;
|
|
31
32
|
exports.PRIMARY_WALLET_ID = PRIMARY_WALLET_ID;
|
|
32
33
|
exports.PROJECT_SETTINGS_STORAGE_KEY = PROJECT_SETTINGS_STORAGE_KEY;
|
|
34
|
+
exports.SDK_LAST_SESSION_SETTINGS = SDK_LAST_SESSION_SETTINGS;
|
|
33
35
|
exports.WALLET_PICKER_SEARCH_KEY = WALLET_PICKER_SEARCH_KEY;
|
|
@@ -13,3 +13,4 @@ export declare const AUTH_MODE = "dynamic_auth_mode";
|
|
|
13
13
|
export declare const CONNECTED_WALLET_NAME_SERVICE = "dynamic_connected_wallet_ns";
|
|
14
14
|
export declare const IS_FULLY_CONNECTED = "dynamic_fully_connected";
|
|
15
15
|
export declare const IS_MULTI_WALLET_ENABLED = "dynamic_multi_wallet_enabled";
|
|
16
|
+
export declare const SDK_LAST_SESSION_SETTINGS = "dynamic_session_settings";
|
|
@@ -12,5 +12,6 @@ const AUTH_MODE = 'dynamic_auth_mode';
|
|
|
12
12
|
const CONNECTED_WALLET_NAME_SERVICE = 'dynamic_connected_wallet_ns';
|
|
13
13
|
const IS_FULLY_CONNECTED = 'dynamic_fully_connected';
|
|
14
14
|
const IS_MULTI_WALLET_ENABLED = 'dynamic_multi_wallet_enabled';
|
|
15
|
+
const SDK_LAST_SESSION_SETTINGS = 'dynamic_session_settings';
|
|
15
16
|
|
|
16
|
-
export { AUTH_MODE, AUTH_TOKEN, AUTH_USER, CONNECTED_WALLETS_INFO, CONNECTED_WALLET_NAME_SERVICE, IS_FULLY_CONNECTED, IS_MULTI_WALLET_ENABLED, LAST_USED_WALLET, NETWORKS_STORAGE_KEY, NEWTOWEB3_WALLET_EXTENSION_FLAG_KEY, NONCE_STORAGE_KEY, PRIMARY_WALLET_ID, PROJECT_SETTINGS_STORAGE_KEY, WALLET_PICKER_SEARCH_KEY };
|
|
17
|
+
export { AUTH_MODE, AUTH_TOKEN, AUTH_USER, CONNECTED_WALLETS_INFO, CONNECTED_WALLET_NAME_SERVICE, IS_FULLY_CONNECTED, IS_MULTI_WALLET_ENABLED, LAST_USED_WALLET, NETWORKS_STORAGE_KEY, NEWTOWEB3_WALLET_EXTENSION_FLAG_KEY, NONCE_STORAGE_KEY, PRIMARY_WALLET_ID, PROJECT_SETTINGS_STORAGE_KEY, SDK_LAST_SESSION_SETTINGS, WALLET_PICKER_SEARCH_KEY };
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var _tslib = require('../../../../../../_virtual/_tslib.cjs');
|
|
6
6
|
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
7
|
-
var utils = require('@dynamic-labs/utils');
|
|
8
7
|
var showPendingConnectView = require('../helpers/showPendingConnectView.cjs');
|
|
9
8
|
var isConnectOnly = require('../helpers/isConnectOnly.cjs');
|
|
10
9
|
var useInternalDynamicContext = require('../../../../context/DynamicContext/useInternalDynamicContext.cjs');
|
|
@@ -16,6 +15,7 @@ require('@dynamic-labs/iconic');
|
|
|
16
15
|
require('react/jsx-runtime');
|
|
17
16
|
require('react');
|
|
18
17
|
require('@dynamic-labs/wallet-book');
|
|
18
|
+
require('@dynamic-labs/utils');
|
|
19
19
|
var localStorage$1 = require('../../../constants/localStorage.cjs');
|
|
20
20
|
require('../../../constants/colors.cjs');
|
|
21
21
|
var localStorage = require('../../../../shared/utils/classes/storage/localStorage.cjs');
|
|
@@ -32,7 +32,7 @@ const useConnectAndSign = ({ shouldUpdateWallets = true, shouldCallCallback = tr
|
|
|
32
32
|
const { setView, goToInitialView } = ViewContext.useViewContext();
|
|
33
33
|
const { setErrorMessage } = ErrorContext.useErrorContext();
|
|
34
34
|
const { captchaToken } = CaptchaContext.useCaptchaContext();
|
|
35
|
-
const { authMode, connectWallet, consumeNonce, displaySiweStatement, environmentId, projectSettings, setIsSingleWalletAccount, user, walletUiUtils, setCallback, setIsVerificationInProgress, isFullyConnected, walletsToConnectByChain = [],
|
|
35
|
+
const { authMode, connectWallet, consumeNonce, displaySiweStatement, environmentId, projectSettings, setIsSingleWalletAccount, user, walletUiUtils, setCallback, setIsVerificationInProgress, isFullyConnected, walletsToConnectByChain = [], } = useInternalDynamicContext.useInternalDynamicContext();
|
|
36
36
|
const { handleWalletsToConnect } = useHandleWalletsToConnect.useHandleWalletsToConnect();
|
|
37
37
|
const verifyWallet = useVerifyWallet.useVerifyWallet({
|
|
38
38
|
consumeNonce,
|
|
@@ -42,7 +42,7 @@ const useConnectAndSign = ({ shouldUpdateWallets = true, shouldCallCallback = tr
|
|
|
42
42
|
setIsSingleWalletAccount,
|
|
43
43
|
});
|
|
44
44
|
return ({ walletConnector, fetchPublicAddressOpts = undefined, }) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
45
|
-
var _a, _b
|
|
45
|
+
var _a, _b;
|
|
46
46
|
// Raise verification ongoing flag
|
|
47
47
|
setIsVerificationInProgress(true);
|
|
48
48
|
try {
|
|
@@ -72,24 +72,8 @@ const useConnectAndSign = ({ shouldUpdateWallets = true, shouldCallCallback = tr
|
|
|
72
72
|
}
|
|
73
73
|
if (isConnectOnly.isConnectOnly(user, authMode)) {
|
|
74
74
|
localStorage.LocalStorage.setToLS(localStorage$1.LAST_USED_WALLET, walletConnector.name);
|
|
75
|
-
if (
|
|
76
|
-
|
|
77
|
-
((_a = utils.last(walletsByChain || [])) === null || _a === void 0 ? void 0 : _a.chain);
|
|
78
|
-
// we don't want to re-calculate wallets to connect state if wallet is already connected.
|
|
79
|
-
// it may happen when user switch network in connect flow on already connected wallet
|
|
80
|
-
const isAlreadyConnected = connectedWallets.find((wallet) => walletConnectorCore.isSameAddress(publicWalletAddress, wallet.address, wallet.chain));
|
|
81
|
-
if (shouldUpdateWallets &&
|
|
82
|
-
(!isAlreadyConnected || didConnectLastWallet)) {
|
|
83
|
-
handleWalletsToConnect();
|
|
84
|
-
}
|
|
85
|
-
if (isAlreadyConnected && !didConnectLastWallet) {
|
|
86
|
-
setView('bridge-next-wallet-connection');
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
if (shouldUpdateWallets) {
|
|
91
|
-
handleWalletsToConnect();
|
|
92
|
-
}
|
|
75
|
+
if (shouldUpdateWallets) {
|
|
76
|
+
handleWalletsToConnect();
|
|
93
77
|
}
|
|
94
78
|
if (!isFullyConnected || walletsToConnectByChain.length) {
|
|
95
79
|
setCallback('connectSuccess');
|
|
@@ -97,7 +81,7 @@ const useConnectAndSign = ({ shouldUpdateWallets = true, shouldCallCallback = tr
|
|
|
97
81
|
return;
|
|
98
82
|
}
|
|
99
83
|
setCallback('connectSuccess');
|
|
100
|
-
if ((
|
|
84
|
+
if ((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.security.hCaptcha) === null || _a === void 0 ? void 0 : _a.enabled) {
|
|
101
85
|
setView('captcha');
|
|
102
86
|
return;
|
|
103
87
|
}
|
|
@@ -118,7 +102,7 @@ const useConnectAndSign = ({ shouldUpdateWallets = true, shouldCallCallback = tr
|
|
|
118
102
|
const userCancelled = (err === null || err === void 0 ? void 0 : err.code) === 'user-cancelled';
|
|
119
103
|
if (!userCancelled)
|
|
120
104
|
logger.logger.debug(err);
|
|
121
|
-
setErrorMessage((
|
|
105
|
+
setErrorMessage((_b = err === null || err === void 0 ? void 0 : err.code) === null || _b === void 0 ? void 0 : _b.toString());
|
|
122
106
|
goToInitialView();
|
|
123
107
|
// Since auth failed, clear verification flag
|
|
124
108
|
// But if user cancelled, clearStatesOnBackClick will have already cleared it. So avoid
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { __awaiter } from '../../../../../../_virtual/_tslib.js';
|
|
2
|
-
import { isEmailWalletConnector, isEmailOTPWalletConnector, isBloctoConnector
|
|
3
|
-
import { last } from '@dynamic-labs/utils';
|
|
2
|
+
import { isEmailWalletConnector, isEmailOTPWalletConnector, isBloctoConnector } from '@dynamic-labs/wallet-connector-core';
|
|
4
3
|
import { showPendingConnectView } from '../helpers/showPendingConnectView.js';
|
|
5
4
|
import { isConnectOnly } from '../helpers/isConnectOnly.js';
|
|
6
5
|
import { useInternalDynamicContext } from '../../../../context/DynamicContext/useInternalDynamicContext.js';
|
|
@@ -12,6 +11,7 @@ import '@dynamic-labs/iconic';
|
|
|
12
11
|
import 'react/jsx-runtime';
|
|
13
12
|
import 'react';
|
|
14
13
|
import '@dynamic-labs/wallet-book';
|
|
14
|
+
import '@dynamic-labs/utils';
|
|
15
15
|
import { LAST_USED_WALLET } from '../../../constants/localStorage.js';
|
|
16
16
|
import '../../../constants/colors.js';
|
|
17
17
|
import { LocalStorage } from '../../../../shared/utils/classes/storage/localStorage.js';
|
|
@@ -28,7 +28,7 @@ const useConnectAndSign = ({ shouldUpdateWallets = true, shouldCallCallback = tr
|
|
|
28
28
|
const { setView, goToInitialView } = useViewContext();
|
|
29
29
|
const { setErrorMessage } = useErrorContext();
|
|
30
30
|
const { captchaToken } = useCaptchaContext();
|
|
31
|
-
const { authMode, connectWallet, consumeNonce, displaySiweStatement, environmentId, projectSettings, setIsSingleWalletAccount, user, walletUiUtils, setCallback, setIsVerificationInProgress, isFullyConnected, walletsToConnectByChain = [],
|
|
31
|
+
const { authMode, connectWallet, consumeNonce, displaySiweStatement, environmentId, projectSettings, setIsSingleWalletAccount, user, walletUiUtils, setCallback, setIsVerificationInProgress, isFullyConnected, walletsToConnectByChain = [], } = useInternalDynamicContext();
|
|
32
32
|
const { handleWalletsToConnect } = useHandleWalletsToConnect();
|
|
33
33
|
const verifyWallet = useVerifyWallet({
|
|
34
34
|
consumeNonce,
|
|
@@ -38,7 +38,7 @@ const useConnectAndSign = ({ shouldUpdateWallets = true, shouldCallCallback = tr
|
|
|
38
38
|
setIsSingleWalletAccount,
|
|
39
39
|
});
|
|
40
40
|
return ({ walletConnector, fetchPublicAddressOpts = undefined, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
|
-
var _a, _b
|
|
41
|
+
var _a, _b;
|
|
42
42
|
// Raise verification ongoing flag
|
|
43
43
|
setIsVerificationInProgress(true);
|
|
44
44
|
try {
|
|
@@ -68,24 +68,8 @@ const useConnectAndSign = ({ shouldUpdateWallets = true, shouldCallCallback = tr
|
|
|
68
68
|
}
|
|
69
69
|
if (isConnectOnly(user, authMode)) {
|
|
70
70
|
LocalStorage.setToLS(LAST_USED_WALLET, walletConnector.name);
|
|
71
|
-
if (
|
|
72
|
-
|
|
73
|
-
((_a = last(walletsByChain || [])) === null || _a === void 0 ? void 0 : _a.chain);
|
|
74
|
-
// we don't want to re-calculate wallets to connect state if wallet is already connected.
|
|
75
|
-
// it may happen when user switch network in connect flow on already connected wallet
|
|
76
|
-
const isAlreadyConnected = connectedWallets.find((wallet) => isSameAddress(publicWalletAddress, wallet.address, wallet.chain));
|
|
77
|
-
if (shouldUpdateWallets &&
|
|
78
|
-
(!isAlreadyConnected || didConnectLastWallet)) {
|
|
79
|
-
handleWalletsToConnect();
|
|
80
|
-
}
|
|
81
|
-
if (isAlreadyConnected && !didConnectLastWallet) {
|
|
82
|
-
setView('bridge-next-wallet-connection');
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
if (shouldUpdateWallets) {
|
|
87
|
-
handleWalletsToConnect();
|
|
88
|
-
}
|
|
71
|
+
if (shouldUpdateWallets) {
|
|
72
|
+
handleWalletsToConnect();
|
|
89
73
|
}
|
|
90
74
|
if (!isFullyConnected || walletsToConnectByChain.length) {
|
|
91
75
|
setCallback('connectSuccess');
|
|
@@ -93,7 +77,7 @@ const useConnectAndSign = ({ shouldUpdateWallets = true, shouldCallCallback = tr
|
|
|
93
77
|
return;
|
|
94
78
|
}
|
|
95
79
|
setCallback('connectSuccess');
|
|
96
|
-
if ((
|
|
80
|
+
if ((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.security.hCaptcha) === null || _a === void 0 ? void 0 : _a.enabled) {
|
|
97
81
|
setView('captcha');
|
|
98
82
|
return;
|
|
99
83
|
}
|
|
@@ -114,7 +98,7 @@ const useConnectAndSign = ({ shouldUpdateWallets = true, shouldCallCallback = tr
|
|
|
114
98
|
const userCancelled = (err === null || err === void 0 ? void 0 : err.code) === 'user-cancelled';
|
|
115
99
|
if (!userCancelled)
|
|
116
100
|
logger.debug(err);
|
|
117
|
-
setErrorMessage((
|
|
101
|
+
setErrorMessage((_b = err === null || err === void 0 ? void 0 : err.code) === null || _b === void 0 ? void 0 : _b.toString());
|
|
118
102
|
goToInitialView();
|
|
119
103
|
// Since auth failed, clear verification flag
|
|
120
104
|
// But if user cancelled, clearStatesOnBackClick will have already cleared it. So avoid
|
|
@@ -6,7 +6,7 @@ var useInternalDynamicContext = require('../../../context/DynamicContext/useInte
|
|
|
6
6
|
var ViewContext = require('../../../context/ViewContext/ViewContext.cjs');
|
|
7
7
|
|
|
8
8
|
const useHandleWalletsToConnect = () => {
|
|
9
|
-
const { walletsToConnectByChain, setWalletsToConnectByChain, setShowAuthFlow, setIsFullyConnected, isFullyConnected, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
9
|
+
const { walletsToConnectByChain, setWalletsToConnectByChain, setShowAuthFlow, setIsFullyConnected, selectedWalletConnector, isFullyConnected, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
10
10
|
const { setView, goToInitialView } = ViewContext.useViewContext();
|
|
11
11
|
const handleWalletsToConnect = () => {
|
|
12
12
|
if (!walletsToConnectByChain) {
|
|
@@ -19,6 +19,20 @@ const useHandleWalletsToConnect = () => {
|
|
|
19
19
|
setShowAuthFlow(false);
|
|
20
20
|
return goToInitialView();
|
|
21
21
|
}
|
|
22
|
+
if (!selectedWalletConnector || !selectedWalletConnector.connectedChain) {
|
|
23
|
+
setShowAuthFlow(false);
|
|
24
|
+
return goToInitialView();
|
|
25
|
+
}
|
|
26
|
+
// Assuming based on the logic above that we have at least one more chain/wallet to connect
|
|
27
|
+
// If the current connected wallet is already connected to the bridge,
|
|
28
|
+
// we can go directly to bridge-next-wallet-connection since we know there is a different chain to connect
|
|
29
|
+
const walletChainsToConnect = walletsToConnectByChain
|
|
30
|
+
.filter((wallet) => wallet.numberOfWallets > 0)
|
|
31
|
+
.map((wallet) => wallet.chain.toString());
|
|
32
|
+
if (!walletChainsToConnect.includes(selectedWalletConnector.connectedChain)) {
|
|
33
|
+
setView('bridge-next-wallet-connection');
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
22
36
|
const [firstWallet, ...restOfTheWallets] = walletsToConnectByChain;
|
|
23
37
|
if (firstWallet.numberOfWallets > 1) {
|
|
24
38
|
const updatedWallets = [
|
|
@@ -2,7 +2,7 @@ import { useInternalDynamicContext } from '../../../context/DynamicContext/useIn
|
|
|
2
2
|
import { useViewContext } from '../../../context/ViewContext/ViewContext.js';
|
|
3
3
|
|
|
4
4
|
const useHandleWalletsToConnect = () => {
|
|
5
|
-
const { walletsToConnectByChain, setWalletsToConnectByChain, setShowAuthFlow, setIsFullyConnected, isFullyConnected, } = useInternalDynamicContext();
|
|
5
|
+
const { walletsToConnectByChain, setWalletsToConnectByChain, setShowAuthFlow, setIsFullyConnected, selectedWalletConnector, isFullyConnected, } = useInternalDynamicContext();
|
|
6
6
|
const { setView, goToInitialView } = useViewContext();
|
|
7
7
|
const handleWalletsToConnect = () => {
|
|
8
8
|
if (!walletsToConnectByChain) {
|
|
@@ -15,6 +15,20 @@ const useHandleWalletsToConnect = () => {
|
|
|
15
15
|
setShowAuthFlow(false);
|
|
16
16
|
return goToInitialView();
|
|
17
17
|
}
|
|
18
|
+
if (!selectedWalletConnector || !selectedWalletConnector.connectedChain) {
|
|
19
|
+
setShowAuthFlow(false);
|
|
20
|
+
return goToInitialView();
|
|
21
|
+
}
|
|
22
|
+
// Assuming based on the logic above that we have at least one more chain/wallet to connect
|
|
23
|
+
// If the current connected wallet is already connected to the bridge,
|
|
24
|
+
// we can go directly to bridge-next-wallet-connection since we know there is a different chain to connect
|
|
25
|
+
const walletChainsToConnect = walletsToConnectByChain
|
|
26
|
+
.filter((wallet) => wallet.numberOfWallets > 0)
|
|
27
|
+
.map((wallet) => wallet.chain.toString());
|
|
28
|
+
if (!walletChainsToConnect.includes(selectedWalletConnector.connectedChain)) {
|
|
29
|
+
setView('bridge-next-wallet-connection');
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
18
32
|
const [firstWallet, ...restOfTheWallets] = walletsToConnectByChain;
|
|
19
33
|
if (firstWallet.numberOfWallets > 1) {
|
|
20
34
|
const updatedWallets = [
|