@dynamic-labs/sdk-react-core 0.18.100-viem.14 → 0.18.100-viem.16
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 +16 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +8 -8
- package/src/lib/context/DynamicContext/helpers.cjs +40 -1
- package/src/lib/context/DynamicContext/helpers.d.ts +5 -0
- package/src/lib/context/DynamicContext/helpers.js +36 -2
- package/src/lib/data/api.cjs +16 -10
- package/src/lib/data/api.js +16 -10
- package/src/lib/utils/constants/localStorage.cjs +4 -0
- package/src/lib/utils/constants/localStorage.d.ts +2 -0
- package/src/lib/utils/constants/localStorage.js +3 -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,20 @@
|
|
|
1
1
|
|
|
2
|
+
### [0.18.100-viem.16](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.100-viem.15...v0.18.100-viem.16) (2023-09-11)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* catch error sending sdkSettings and log warning v18-viem ([#3277](https://github.com/dynamic-labs/DynamicAuth/issues/3277)) ([af86753](https://github.com/dynamic-labs/DynamicAuth/commit/af86753f4b73c0ec4ba981c9ffd47af21fac9d8d)), closes [#3274](https://github.com/dynamic-labs/DynamicAuth/issues/3274)
|
|
8
|
+
* issue where unexpected token would occur when bundlers defined process.env ([#3283](https://github.com/dynamic-labs/DynamicAuth/issues/3283)) ([16110f9](https://github.com/dynamic-labs/DynamicAuth/commit/16110f90f02841104b053365b17343ed80a72018))
|
|
9
|
+
* seprate ls checks for dynamiccontext and wagmi settings v18-viem ([#3279](https://github.com/dynamic-labs/DynamicAuth/issues/3279)) ([e31d85e](https://github.com/dynamic-labs/DynamicAuth/commit/e31d85e576d0fba31616d6aa408316c261f42373)), closes [#3275](https://github.com/dynamic-labs/DynamicAuth/issues/3275)
|
|
10
|
+
|
|
11
|
+
### [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)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
* 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))
|
|
16
|
+
* 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)
|
|
17
|
+
|
|
2
18
|
### [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
19
|
|
|
4
20
|
|
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.16",
|
|
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.16",
|
|
19
|
+
"@dynamic-labs/multi-wallet": "0.18.100-viem.16",
|
|
20
|
+
"@dynamic-labs/rpc-providers": "0.18.100-viem.16",
|
|
21
|
+
"@dynamic-labs/types": "0.18.100-viem.16",
|
|
22
|
+
"@dynamic-labs/utils": "0.18.100-viem.16",
|
|
23
|
+
"@dynamic-labs/wallet-book": "0.18.100-viem.16",
|
|
24
|
+
"@dynamic-labs/wallet-connector-core": "0.18.100-viem.16",
|
|
25
25
|
"eventemitter3": "5.0.1"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
@@ -11,12 +11,16 @@ 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 dynamicContextSettingsTimer;
|
|
22
|
+
let wagmiSettingsTimer;
|
|
23
|
+
const sdkSettingsTimeout = 24 * 60 * 60 * 1000; // 24 hours
|
|
20
24
|
const isAuthTokenExpired = (token) => {
|
|
21
25
|
const decoded = decodeJwt.decodeJwt(token);
|
|
22
26
|
if (!decoded) {
|
|
@@ -66,7 +70,42 @@ const getInitialView = ({ connectedWallets, loginWithEmail, isBridgeFlow, isFull
|
|
|
66
70
|
}
|
|
67
71
|
return 'wallet-list';
|
|
68
72
|
};
|
|
73
|
+
const setDynamicContextSessionSettings = () => {
|
|
74
|
+
setSessionSettings(localStorage$1.DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS);
|
|
75
|
+
dynamicContextSettingsTimer = setTimeout(isDynamicContextSessionSettingExpired, sdkSettingsTimeout);
|
|
76
|
+
};
|
|
77
|
+
const setWagmiSessionSettings = () => {
|
|
78
|
+
setSessionSettings(localStorage$1.WAGMI_LAST_SESSION_SETTINGS);
|
|
79
|
+
wagmiSettingsTimer = setTimeout(isWagmiSessionSettingExpired, sdkSettingsTimeout);
|
|
80
|
+
};
|
|
81
|
+
const setSessionSettings = (lsKey) => {
|
|
82
|
+
const timestamp = new Date().getTime();
|
|
83
|
+
localStorage.LocalStorage.setToLS(lsKey, timestamp.toString());
|
|
84
|
+
};
|
|
85
|
+
const isDynamicContextSessionSettingExpired = () => isSettingExpired(localStorage$1.DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS, dynamicContextSettingsTimer);
|
|
86
|
+
const isWagmiSessionSettingExpired = () => isSettingExpired(localStorage$1.WAGMI_LAST_SESSION_SETTINGS, wagmiSettingsTimer);
|
|
87
|
+
const isSettingExpired = (lsKey, timer) => {
|
|
88
|
+
const lastSentTime = localStorage.LocalStorage.getFromLS(lsKey);
|
|
89
|
+
// should set new time
|
|
90
|
+
if (!lastSentTime) {
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
const lastSentTimestamp = parseInt(lastSentTime);
|
|
94
|
+
const currentTime = new Date().getTime();
|
|
95
|
+
if (currentTime - lastSentTimestamp > sdkSettingsTimeout) {
|
|
96
|
+
// Reset session-related data here
|
|
97
|
+
clearTimeout(timer);
|
|
98
|
+
localStorage.LocalStorage.removeFromLS(lsKey);
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
return false;
|
|
102
|
+
};
|
|
69
103
|
|
|
70
104
|
exports.getInitialView = getInitialView;
|
|
71
105
|
exports.initExpirationTime = initExpirationTime;
|
|
72
106
|
exports.isAuthTokenExpired = isAuthTokenExpired;
|
|
107
|
+
exports.isDynamicContextSessionSettingExpired = isDynamicContextSessionSettingExpired;
|
|
108
|
+
exports.isWagmiSessionSettingExpired = isWagmiSessionSettingExpired;
|
|
109
|
+
exports.sdkSettingsTimeout = sdkSettingsTimeout;
|
|
110
|
+
exports.setDynamicContextSessionSettings = setDynamicContextSessionSettings;
|
|
111
|
+
exports.setWagmiSessionSettings = setWagmiSessionSettings;
|
|
@@ -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,7 @@ export declare const getInitialView: ({ connectedWallets, loginWithEmail, isBrid
|
|
|
9
10
|
isFullyConnected: boolean;
|
|
10
11
|
isMultiWalletEnabled: boolean;
|
|
11
12
|
}) => ViewType;
|
|
13
|
+
export declare const setDynamicContextSessionSettings: () => void;
|
|
14
|
+
export declare const setWagmiSessionSettings: () => void;
|
|
15
|
+
export declare const isDynamicContextSessionSettingExpired: () => boolean;
|
|
16
|
+
export declare const isWagmiSessionSettingExpired: () => boolean;
|
|
@@ -7,12 +7,16 @@ import 'react';
|
|
|
7
7
|
import '../../shared/logger.js';
|
|
8
8
|
import '@dynamic-labs/wallet-book';
|
|
9
9
|
import '@dynamic-labs/utils';
|
|
10
|
+
import { DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS, WAGMI_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 dynamicContextSettingsTimer;
|
|
18
|
+
let wagmiSettingsTimer;
|
|
19
|
+
const sdkSettingsTimeout = 24 * 60 * 60 * 1000; // 24 hours
|
|
16
20
|
const isAuthTokenExpired = (token) => {
|
|
17
21
|
const decoded = decodeJwt(token);
|
|
18
22
|
if (!decoded) {
|
|
@@ -62,5 +66,35 @@ const getInitialView = ({ connectedWallets, loginWithEmail, isBridgeFlow, isFull
|
|
|
62
66
|
}
|
|
63
67
|
return 'wallet-list';
|
|
64
68
|
};
|
|
69
|
+
const setDynamicContextSessionSettings = () => {
|
|
70
|
+
setSessionSettings(DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS);
|
|
71
|
+
dynamicContextSettingsTimer = setTimeout(isDynamicContextSessionSettingExpired, sdkSettingsTimeout);
|
|
72
|
+
};
|
|
73
|
+
const setWagmiSessionSettings = () => {
|
|
74
|
+
setSessionSettings(WAGMI_LAST_SESSION_SETTINGS);
|
|
75
|
+
wagmiSettingsTimer = setTimeout(isWagmiSessionSettingExpired, sdkSettingsTimeout);
|
|
76
|
+
};
|
|
77
|
+
const setSessionSettings = (lsKey) => {
|
|
78
|
+
const timestamp = new Date().getTime();
|
|
79
|
+
LocalStorage.setToLS(lsKey, timestamp.toString());
|
|
80
|
+
};
|
|
81
|
+
const isDynamicContextSessionSettingExpired = () => isSettingExpired(DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS, dynamicContextSettingsTimer);
|
|
82
|
+
const isWagmiSessionSettingExpired = () => isSettingExpired(WAGMI_LAST_SESSION_SETTINGS, wagmiSettingsTimer);
|
|
83
|
+
const isSettingExpired = (lsKey, timer) => {
|
|
84
|
+
const lastSentTime = LocalStorage.getFromLS(lsKey);
|
|
85
|
+
// should set new time
|
|
86
|
+
if (!lastSentTime) {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
const lastSentTimestamp = parseInt(lastSentTime);
|
|
90
|
+
const currentTime = new Date().getTime();
|
|
91
|
+
if (currentTime - lastSentTimestamp > sdkSettingsTimeout) {
|
|
92
|
+
// Reset session-related data here
|
|
93
|
+
clearTimeout(timer);
|
|
94
|
+
LocalStorage.removeFromLS(lsKey);
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
return false;
|
|
98
|
+
};
|
|
65
99
|
|
|
66
|
-
export { getInitialView, initExpirationTime, isAuthTokenExpired };
|
|
100
|
+
export { getInitialView, initExpirationTime, isAuthTokenExpired, isDynamicContextSessionSettingExpired, isWagmiSessionSettingExpired, sdkSettingsTimeout, setDynamicContextSessionSettings, setWagmiSessionSettings };
|
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 = {
|
|
@@ -401,19 +402,24 @@ const getOnrampProviders = ({ chain, environmentId, networkId, token, walletAddr
|
|
|
401
402
|
const sendDynamicProps = (environmentId, settingsToSend) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
402
403
|
try {
|
|
403
404
|
const { dynamicContextProps, dynamicWagmiSettings } = settingsToSend;
|
|
404
|
-
if (dynamicContextProps
|
|
405
|
-
yield
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
dynamicWagmiSettings,
|
|
410
|
-
},
|
|
411
|
-
});
|
|
405
|
+
if (dynamicContextProps) {
|
|
406
|
+
yield sendDynamicContextSettings(environmentId, { dynamicContextProps }, helpers.isDynamicContextSessionSettingExpired, helpers.setDynamicContextSessionSettings);
|
|
407
|
+
}
|
|
408
|
+
if (dynamicWagmiSettings) {
|
|
409
|
+
yield sendDynamicContextSettings(environmentId, { dynamicWagmiSettings }, helpers.isWagmiSessionSettingExpired, helpers.setWagmiSessionSettings);
|
|
412
410
|
}
|
|
413
411
|
}
|
|
414
|
-
catch (
|
|
415
|
-
logger.logger.error
|
|
412
|
+
catch (error) {
|
|
413
|
+
logger.logger.warn('Error caught when sending sdkSettings to api. Please notify Dynamic, and send the DynamicContextProvider settings you currently have configured', { error });
|
|
414
|
+
}
|
|
415
|
+
});
|
|
416
|
+
const sendDynamicContextSettings = (environmentId, sdkSettingsRequest, isSdkSettingExpired, setSDKSessionSettings) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
417
|
+
// sent once. no need to send again
|
|
418
|
+
if (!isSdkSettingExpired()) {
|
|
419
|
+
return;
|
|
416
420
|
}
|
|
421
|
+
yield sdkApi().logDynamicSdkSettings({ environmentId, sdkSettingsRequest });
|
|
422
|
+
setSDKSessionSettings();
|
|
417
423
|
});
|
|
418
424
|
const mergeUserAccounts = (userJwt, environmentId) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
419
425
|
try {
|
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 { isDynamicContextSessionSettingExpired, setDynamicContextSessionSettings, isWagmiSessionSettingExpired, setWagmiSessionSettings } from '../context/DynamicContext/helpers.js';
|
|
17
18
|
|
|
18
19
|
const sdkApi = (jwt) => {
|
|
19
20
|
const settings = {
|
|
@@ -397,19 +398,24 @@ const getOnrampProviders = ({ chain, environmentId, networkId, token, walletAddr
|
|
|
397
398
|
const sendDynamicProps = (environmentId, settingsToSend) => __awaiter(void 0, void 0, void 0, function* () {
|
|
398
399
|
try {
|
|
399
400
|
const { dynamicContextProps, dynamicWagmiSettings } = settingsToSend;
|
|
400
|
-
if (dynamicContextProps
|
|
401
|
-
yield
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
dynamicWagmiSettings,
|
|
406
|
-
},
|
|
407
|
-
});
|
|
401
|
+
if (dynamicContextProps) {
|
|
402
|
+
yield sendDynamicContextSettings(environmentId, { dynamicContextProps }, isDynamicContextSessionSettingExpired, setDynamicContextSessionSettings);
|
|
403
|
+
}
|
|
404
|
+
if (dynamicWagmiSettings) {
|
|
405
|
+
yield sendDynamicContextSettings(environmentId, { dynamicWagmiSettings }, isWagmiSessionSettingExpired, setWagmiSessionSettings);
|
|
408
406
|
}
|
|
409
407
|
}
|
|
410
|
-
catch (
|
|
411
|
-
logger.error
|
|
408
|
+
catch (error) {
|
|
409
|
+
logger.warn('Error caught when sending sdkSettings to api. Please notify Dynamic, and send the DynamicContextProvider settings you currently have configured', { error });
|
|
410
|
+
}
|
|
411
|
+
});
|
|
412
|
+
const sendDynamicContextSettings = (environmentId, sdkSettingsRequest, isSdkSettingExpired, setSDKSessionSettings) => __awaiter(void 0, void 0, void 0, function* () {
|
|
413
|
+
// sent once. no need to send again
|
|
414
|
+
if (!isSdkSettingExpired()) {
|
|
415
|
+
return;
|
|
412
416
|
}
|
|
417
|
+
yield sdkApi().logDynamicSdkSettings({ environmentId, sdkSettingsRequest });
|
|
418
|
+
setSDKSessionSettings();
|
|
413
419
|
});
|
|
414
420
|
const mergeUserAccounts = (userJwt, environmentId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
415
421
|
try {
|
|
@@ -16,12 +16,15 @@ 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 DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS = 'dynamic_context_session_settings';
|
|
20
|
+
const WAGMI_LAST_SESSION_SETTINGS = 'dynamic_wagmi_session_settings';
|
|
19
21
|
|
|
20
22
|
exports.AUTH_MODE = AUTH_MODE;
|
|
21
23
|
exports.AUTH_TOKEN = AUTH_TOKEN;
|
|
22
24
|
exports.AUTH_USER = AUTH_USER;
|
|
23
25
|
exports.CONNECTED_WALLETS_INFO = CONNECTED_WALLETS_INFO;
|
|
24
26
|
exports.CONNECTED_WALLET_NAME_SERVICE = CONNECTED_WALLET_NAME_SERVICE;
|
|
27
|
+
exports.DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS = DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS;
|
|
25
28
|
exports.IS_FULLY_CONNECTED = IS_FULLY_CONNECTED;
|
|
26
29
|
exports.IS_MULTI_WALLET_ENABLED = IS_MULTI_WALLET_ENABLED;
|
|
27
30
|
exports.LAST_USED_WALLET = LAST_USED_WALLET;
|
|
@@ -30,4 +33,5 @@ exports.NEWTOWEB3_WALLET_EXTENSION_FLAG_KEY = NEWTOWEB3_WALLET_EXTENSION_FLAG_KE
|
|
|
30
33
|
exports.NONCE_STORAGE_KEY = NONCE_STORAGE_KEY;
|
|
31
34
|
exports.PRIMARY_WALLET_ID = PRIMARY_WALLET_ID;
|
|
32
35
|
exports.PROJECT_SETTINGS_STORAGE_KEY = PROJECT_SETTINGS_STORAGE_KEY;
|
|
36
|
+
exports.WAGMI_LAST_SESSION_SETTINGS = WAGMI_LAST_SESSION_SETTINGS;
|
|
33
37
|
exports.WALLET_PICKER_SEARCH_KEY = WALLET_PICKER_SEARCH_KEY;
|
|
@@ -13,3 +13,5 @@ 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 DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS = "dynamic_context_session_settings";
|
|
17
|
+
export declare const WAGMI_LAST_SESSION_SETTINGS = "dynamic_wagmi_session_settings";
|
|
@@ -12,5 +12,7 @@ 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 DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS = 'dynamic_context_session_settings';
|
|
16
|
+
const WAGMI_LAST_SESSION_SETTINGS = 'dynamic_wagmi_session_settings';
|
|
15
17
|
|
|
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 };
|
|
18
|
+
export { AUTH_MODE, AUTH_TOKEN, AUTH_USER, CONNECTED_WALLETS_INFO, CONNECTED_WALLET_NAME_SERVICE, DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS, 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, WAGMI_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 = [
|