@dynamic-labs/sdk-react-core 0.19.3 → 1.0.0-alpha.1
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 +41 -24
- package/package.cjs +2 -2
- package/package.js +2 -2
- package/package.json +10 -10
- package/src/lib/components/AuthProviderIcon/AuthProviderIcon.cjs +2 -1
- package/src/lib/components/AuthProviderIcon/AuthProviderIcon.js +3 -2
- package/src/lib/components/DynamicConnectButton/DynamicConnectButton.cjs +3 -3
- package/src/lib/components/DynamicConnectButton/DynamicConnectButton.js +3 -3
- package/src/lib/context/CaptchaContext/CaptchaContext.cjs +27 -1
- package/src/lib/context/CaptchaContext/CaptchaContext.d.ts +14 -0
- package/src/lib/context/CaptchaContext/CaptchaContext.js +28 -3
- package/src/lib/context/DynamicContext/DynamicContext.cjs +11 -11
- package/src/lib/context/DynamicContext/DynamicContext.js +11 -11
- package/src/lib/context/DynamicContext/hooks/index.d.ts +1 -0
- package/src/lib/context/DynamicContext/hooks/useSelectedWalletConnector/index.d.ts +1 -0
- package/src/lib/context/DynamicContext/hooks/useSelectedWalletConnector/useSelectedWalletConnector.cjs +20 -0
- package/src/lib/context/DynamicContext/hooks/useSelectedWalletConnector/useSelectedWalletConnector.d.ts +10 -0
- package/src/lib/context/DynamicContext/hooks/useSelectedWalletConnector/useSelectedWalletConnector.js +16 -0
- package/src/lib/context/DynamicContext/types/index.d.ts +1 -1
- package/src/lib/context/DynamicContext/useCustomerCallbacks/types.d.ts +2 -3
- package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.cjs +1 -1
- package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.d.ts +1 -1
- package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.js +1 -1
- package/src/lib/context/SocialRedirectContext/SocialRedirectContext.cjs +6 -4
- package/src/lib/context/SocialRedirectContext/SocialRedirectContext.js +6 -4
- package/src/lib/data/api.cjs +6 -3
- package/src/lib/data/api.d.ts +5 -3
- package/src/lib/data/api.js +6 -3
- package/src/lib/main.global.cjs +1 -1
- package/src/lib/main.global.js +1 -1
- package/src/lib/styles/index.shadow.cjs +1 -1
- package/src/lib/styles/index.shadow.js +1 -1
- package/src/lib/utils/hooks/authenticationHooks/helpers/showPendingConnectView.cjs +1 -1
- package/src/lib/utils/hooks/authenticationHooks/helpers/showPendingConnectView.js +1 -1
- package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.cjs +42 -26
- package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.js +42 -26
- package/src/lib/utils/hooks/authenticationHooks/useConnectAndSignSplitSteps/useConnectAndSignSplitSteps.cjs +9 -3
- package/src/lib/utils/hooks/authenticationHooks/useConnectAndSignSplitSteps/useConnectAndSignSplitSteps.js +9 -3
- package/src/lib/utils/hooks/authenticationHooks/useSignConnectOnlyUser/useSignConnectOnlyUser.cjs +5 -2
- package/src/lib/utils/hooks/authenticationHooks/useSignConnectOnlyUser/useSignConnectOnlyUser.js +5 -2
- package/src/lib/utils/hooks/index.d.ts +0 -1
- package/src/lib/utils/hooks/useConnectedWalletsNetworkValidation/useConnectedWalletsNetworkValidation.cjs +4 -4
- package/src/lib/utils/hooks/useConnectedWalletsNetworkValidation/useConnectedWalletsNetworkValidation.js +4 -4
- package/src/lib/utils/hooks/useEmailProvider/useEmailProvider.cjs +39 -5
- package/src/lib/utils/hooks/useEmailProvider/useEmailProvider.d.ts +1 -2
- package/src/lib/utils/hooks/useEmailProvider/useEmailProvider.js +40 -6
- package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +13 -1
- package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +13 -1
- package/src/lib/utils/hooks/useFetchNetworkConfigurations/useFetchNetworkConfigurations.cjs +10 -1
- package/src/lib/utils/hooks/useFetchNetworkConfigurations/useFetchNetworkConfigurations.js +10 -1
- package/src/lib/utils/hooks/useFetchProjectSettings/useFetchProjectSettings.cjs +8 -1
- package/src/lib/utils/hooks/useFetchProjectSettings/useFetchProjectSettings.js +9 -2
- package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.cjs +1 -1
- package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.js +1 -1
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +4 -3
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.d.ts +5 -1
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +4 -3
- package/src/lib/utils/hooks/useValidateSession/useValidateSession.cjs +3 -1
- package/src/lib/utils/hooks/useValidateSession/useValidateSession.js +3 -1
- package/src/lib/utils/hooks/useWalletConnectorEvent/useWalletConnectorEvent.cjs +0 -1
- package/src/lib/utils/hooks/useWalletConnectorEvent/useWalletConnectorEvent.js +0 -1
- package/src/lib/utils/hooks/useWalletConnectors/utils/createLinkedWalletsFromWalletOptions/createLinkedWalletsFromWalletOptions.cjs +15 -4
- package/src/lib/utils/hooks/useWalletConnectors/utils/createLinkedWalletsFromWalletOptions/createLinkedWalletsFromWalletOptions.js +15 -4
- package/src/lib/utils/hooks/useWalletConnectors/utils/findWallet/findWallet.cjs +9 -0
- package/src/lib/utils/hooks/useWalletConnectors/utils/findWallet/findWallet.d.ts +3 -0
- package/src/lib/utils/hooks/useWalletConnectors/utils/findWallet/findWallet.js +5 -0
- package/src/lib/utils/hooks/useWalletConnectors/utils/findWallet/index.d.ts +1 -0
- package/src/lib/utils/hooks/useWalletConnectors/utils/smartWallet/index.d.ts +1 -0
- package/src/lib/utils/hooks/useWalletConnectors/utils/smartWallet/smartWallet.cjs +36 -0
- package/src/lib/utils/hooks/useWalletConnectors/utils/smartWallet/smartWallet.d.ts +10 -0
- package/src/lib/utils/hooks/useWalletConnectors/utils/smartWallet/smartWallet.js +29 -0
- package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +4 -4
- package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.d.ts +3 -2
- package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +4 -4
- package/src/lib/utils/hooks/useWalletItemActions/useWalletItemActions.cjs +8 -7
- package/src/lib/utils/hooks/useWalletItemActions/useWalletItemActions.js +8 -7
- package/src/lib/utils/hooks/useWallets/useWallets.cjs +0 -1
- package/src/lib/utils/hooks/useWallets/useWallets.js +0 -1
- package/src/lib/views/CaptchaVerifyUser/CaptchaVerifyUser.cjs +9 -41
- package/src/lib/views/CaptchaVerifyUser/CaptchaVerifyUser.d.ts +1 -1
- package/src/lib/views/CaptchaVerifyUser/CaptchaVerifyUser.js +9 -41
- package/src/lib/views/CollectUserDataView/OnboardingUserDataForm/OnboardingUserDataForm.cjs +1 -1
- package/src/lib/views/CollectUserDataView/OnboardingUserDataForm/OnboardingUserDataForm.js +1 -1
- package/src/lib/views/LoginView/sections/EmailSignInSection/LoginEmailForm.cjs +38 -34
- package/src/lib/views/LoginView/sections/EmailSignInSection/LoginEmailForm.js +38 -34
- package/src/lib/views/LoginView/sections/SocialSignInSection/DynamicSocialSignIn/DynamicSocialSignIn.cjs +20 -3
- package/src/lib/views/LoginView/sections/SocialSignInSection/DynamicSocialSignIn/DynamicSocialSignIn.js +20 -3
- package/src/lib/views/LoginView/sections/SocialSignInSection/MagicSocialSignIn/MagicSocialSignIn.cjs +17 -2
- package/src/lib/views/LoginView/sections/SocialSignInSection/MagicSocialSignIn/MagicSocialSignIn.js +17 -2
- package/src/lib/views/LoginView/sections/WalletSignInSection/ListItemButton/ListItemButton.cjs +1 -1
- package/src/lib/views/LoginView/sections/WalletSignInSection/ListItemButton/ListItemButton.js +1 -1
- package/src/lib/views/PasskeyIntroView/PasskeyIntroView.cjs +15 -3
- package/src/lib/views/PasskeyIntroView/PasskeyIntroView.js +15 -3
- package/src/lib/views/PasskeyIntroView/utils/createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.cjs +1 -2
- package/src/lib/views/PasskeyIntroView/utils/createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.d.ts +1 -1
- package/src/lib/views/PasskeyIntroView/utils/createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.js +1 -2
- package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.cjs +16 -8
- package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.js +16 -8
- package/src/lib/views/TransactionConfirmationView/hooks/useTransactionTotal/useTransactionTotal.cjs +5 -2
- package/src/lib/views/TransactionConfirmationView/hooks/useTransactionTotal/useTransactionTotal.d.ts +2 -1
- package/src/lib/views/TransactionConfirmationView/hooks/useTransactionTotal/useTransactionTotal.js +5 -2
- package/src/lib/views/WalletSignSpinnerView/WalletSignSpinnerView.cjs +2 -2
- package/src/lib/views/WalletSignSpinnerView/WalletSignSpinnerView.js +2 -2
- package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedAuthFlow/DynamicEmbeddedAuthFlow.cjs +2 -1
- package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedAuthFlow/DynamicEmbeddedAuthFlow.d.ts +1 -1
- package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedAuthFlow/DynamicEmbeddedAuthFlow.js +2 -1
- package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedUserProfile/DynamicEmbeddedUserProfile.cjs +2 -1
- package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedUserProfile/DynamicEmbeddedUserProfile.d.ts +1 -1
- package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedUserProfile/DynamicEmbeddedUserProfile.js +2 -1
- package/src/lib/widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.cjs +6 -7
- package/src/lib/widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.js +6 -7
- package/src/lib/widgets/DynamicWidget/components/Wallet/Wallet.cjs +4 -3
- package/src/lib/widgets/DynamicWidget/components/Wallet/Wallet.js +4 -3
- package/src/lib/widgets/DynamicWidget/context/DynamicWidgetContext.cjs +3 -5
- package/src/lib/widgets/DynamicWidget/context/DynamicWidgetContext.js +3 -5
- package/src/lib/widgets/DynamicWidget/prompts/PendingAccountSwitchModal/SwitchOrUseActiveAccountView/SwitchOrUseActiveAccountView.cjs +3 -3
- package/src/lib/widgets/DynamicWidget/prompts/PendingAccountSwitchModal/SwitchOrUseActiveAccountView/SwitchOrUseActiveAccountView.js +3 -3
- package/src/lib/widgets/DynamicWidget/prompts/PendingSignModal/PendingSignModal.cjs +2 -2
- package/src/lib/widgets/DynamicWidget/prompts/PendingSignModal/PendingSignModal.js +2 -2
- package/src/lib/widgets/DynamicWidget/views/EditProfileView/EditProfileView.cjs +2 -4
- package/src/lib/widgets/DynamicWidget/views/EditProfileView/EditProfileView.js +2 -4
- package/src/lib/widgets/DynamicWidget/views/WalletsView/WalletsView.cjs +3 -5
- package/src/lib/widgets/DynamicWidget/views/WalletsView/WalletsView.js +3 -5
- package/src/lib/utils/hooks/useMultiWalletFlag/index.d.ts +0 -1
- package/src/lib/utils/hooks/useMultiWalletFlag/useMultiWalletFlag.cjs +0 -36
- package/src/lib/utils/hooks/useMultiWalletFlag/useMultiWalletFlag.d.ts +0 -2
- package/src/lib/utils/hooks/useMultiWalletFlag/useMultiWalletFlag.js +0 -31
|
@@ -26,8 +26,8 @@ import { isProgrammableNetworkSwitchSupported } from '../../../functions/isProgr
|
|
|
26
26
|
|
|
27
27
|
const useConnectAndSign = ({ shouldUpdateWallets = true, shouldCallCallback = true, } = {}) => {
|
|
28
28
|
const { setView, goToInitialView } = useViewContext();
|
|
29
|
+
const { engageCaptcha, getCaptchaToken } = useCaptchaContext();
|
|
29
30
|
const { setErrorMessage } = useErrorContext();
|
|
30
|
-
const { captchaToken } = useCaptchaContext();
|
|
31
31
|
const { authMode, connectWallet, consumeNonce, displaySiweStatement, environmentId, projectSettings, setIsSingleWalletAccount, user, walletUiUtils, setCallback, setIsVerificationInProgress, } = useInternalDynamicContext();
|
|
32
32
|
const { handleWalletsToConnect } = useHandleWalletsToConnect();
|
|
33
33
|
const verifyWallet = useVerifyWallet({
|
|
@@ -37,8 +37,35 @@ const useConnectAndSign = ({ shouldUpdateWallets = true, shouldCallCallback = tr
|
|
|
37
37
|
projectSettings,
|
|
38
38
|
setIsSingleWalletAccount,
|
|
39
39
|
});
|
|
40
|
+
const handleWalletVerify = (walletConnector, publicWalletAddress, captchaToken) => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
|
+
if (!isEmailWalletConnector(walletConnector) ||
|
|
42
|
+
isBloctoConnector(walletConnector)) {
|
|
43
|
+
setView('pending-signature');
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
walletUiUtils.disabledConfirmationOnce();
|
|
47
|
+
}
|
|
48
|
+
yield verifyWallet({
|
|
49
|
+
captchaToken,
|
|
50
|
+
publicWalletAddress,
|
|
51
|
+
walletConnector,
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
const handleWalletVerifyError = (err) => {
|
|
55
|
+
var _a;
|
|
56
|
+
const userCancelled = (err === null || err === void 0 ? void 0 : err.code) === 'user-cancelled';
|
|
57
|
+
if (!userCancelled)
|
|
58
|
+
logger.debug(err);
|
|
59
|
+
setErrorMessage((_a = err === null || err === void 0 ? void 0 : err.code) === null || _a === void 0 ? void 0 : _a.toString());
|
|
60
|
+
goToInitialView();
|
|
61
|
+
// Since auth failed, clear verification flag
|
|
62
|
+
// But if user cancelled, clearStatesOnBackClick will have already cleared it. So avoid
|
|
63
|
+
// clearing again since that would trigger a warning
|
|
64
|
+
if (!userCancelled)
|
|
65
|
+
setIsVerificationInProgress(false);
|
|
66
|
+
};
|
|
40
67
|
return ({ walletConnector, fetchPublicAddressOpts = undefined, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
|
-
var _a
|
|
68
|
+
var _a;
|
|
42
69
|
// Raise verification ongoing flag
|
|
43
70
|
setIsVerificationInProgress(true);
|
|
44
71
|
try {
|
|
@@ -75,34 +102,23 @@ const useConnectAndSign = ({ shouldUpdateWallets = true, shouldCallCallback = tr
|
|
|
75
102
|
return;
|
|
76
103
|
}
|
|
77
104
|
if ((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.security.hCaptcha) === null || _a === void 0 ? void 0 : _a.enabled) {
|
|
78
|
-
|
|
105
|
+
engageCaptcha({
|
|
106
|
+
authMethod: 'wallet',
|
|
107
|
+
onCaptchaSuccess: (captchaToken) => __awaiter(void 0, void 0, void 0, function* () {
|
|
108
|
+
try {
|
|
109
|
+
yield handleWalletVerify(walletConnector, publicWalletAddress, captchaToken);
|
|
110
|
+
}
|
|
111
|
+
catch (e) {
|
|
112
|
+
handleWalletVerifyError(e);
|
|
113
|
+
}
|
|
114
|
+
}),
|
|
115
|
+
});
|
|
79
116
|
return;
|
|
80
117
|
}
|
|
81
|
-
|
|
82
|
-
isBloctoConnector(walletConnector)) {
|
|
83
|
-
setView('pending-signature');
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
walletUiUtils.disabledConfirmationOnce();
|
|
87
|
-
}
|
|
88
|
-
yield verifyWallet({
|
|
89
|
-
captchaToken,
|
|
90
|
-
publicWalletAddress,
|
|
91
|
-
walletConnector,
|
|
92
|
-
});
|
|
118
|
+
yield handleWalletVerify(walletConnector, publicWalletAddress, getCaptchaToken());
|
|
93
119
|
}
|
|
94
120
|
catch (err) {
|
|
95
|
-
|
|
96
|
-
if (!userCancelled)
|
|
97
|
-
logger.debug(err);
|
|
98
|
-
setErrorMessage((_b = err === null || err === void 0 ? void 0 : err.code) === null || _b === void 0 ? void 0 : _b.toString());
|
|
99
|
-
goToInitialView();
|
|
100
|
-
// Since auth failed, clear verification flag
|
|
101
|
-
// But if user cancelled, clearStatesOnBackClick will have already cleared it. So avoid
|
|
102
|
-
// clearing again since that would trigger a warning
|
|
103
|
-
if (!userCancelled)
|
|
104
|
-
setIsVerificationInProgress(false);
|
|
105
|
-
return;
|
|
121
|
+
handleWalletVerifyError(err);
|
|
106
122
|
}
|
|
107
123
|
});
|
|
108
124
|
};
|
|
@@ -28,7 +28,7 @@ var useHandleWalletsToConnect = require('../../useHandleWalletsToConnect/useHand
|
|
|
28
28
|
const useConnectAndSignSplitSteps = () => {
|
|
29
29
|
const { setView, goToInitialView } = ViewContext.useViewContext();
|
|
30
30
|
const { setErrorMessage } = ErrorContext.useErrorContext();
|
|
31
|
-
const {
|
|
31
|
+
const { getCaptchaToken, engageCaptcha } = CaptchaContext.useCaptchaContext();
|
|
32
32
|
const { connectWallet, consumeNonce, displaySiweStatement, projectSettings, environmentId, setIsSingleWalletAccount, setShowAuthFlow, user, authMode, setCallback, setIsVerificationInProgress, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
33
33
|
const { handleWalletsToConnect } = useHandleWalletsToConnect.useHandleWalletsToConnect();
|
|
34
34
|
const verifyWallet = useVerifyWallet.useVerifyWallet({
|
|
@@ -56,7 +56,13 @@ const useConnectAndSignSplitSteps = () => {
|
|
|
56
56
|
return;
|
|
57
57
|
}
|
|
58
58
|
if ((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.security.hCaptcha) === null || _a === void 0 ? void 0 : _a.enabled) {
|
|
59
|
-
|
|
59
|
+
engageCaptcha({
|
|
60
|
+
authMethod: 'wallet',
|
|
61
|
+
onCaptchaSuccess: (_captchaToken) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
62
|
+
setShowAuthFlow(true);
|
|
63
|
+
setView('pending-signature');
|
|
64
|
+
}),
|
|
65
|
+
});
|
|
60
66
|
return;
|
|
61
67
|
}
|
|
62
68
|
setShowAuthFlow(true);
|
|
@@ -81,7 +87,7 @@ const useConnectAndSignSplitSteps = () => {
|
|
|
81
87
|
return;
|
|
82
88
|
}
|
|
83
89
|
yield verifyWallet({
|
|
84
|
-
captchaToken,
|
|
90
|
+
captchaToken: getCaptchaToken(),
|
|
85
91
|
publicWalletAddress,
|
|
86
92
|
walletConnector,
|
|
87
93
|
});
|
|
@@ -24,7 +24,7 @@ import { useHandleWalletsToConnect } from '../../useHandleWalletsToConnect/useHa
|
|
|
24
24
|
const useConnectAndSignSplitSteps = () => {
|
|
25
25
|
const { setView, goToInitialView } = useViewContext();
|
|
26
26
|
const { setErrorMessage } = useErrorContext();
|
|
27
|
-
const {
|
|
27
|
+
const { getCaptchaToken, engageCaptcha } = useCaptchaContext();
|
|
28
28
|
const { connectWallet, consumeNonce, displaySiweStatement, projectSettings, environmentId, setIsSingleWalletAccount, setShowAuthFlow, user, authMode, setCallback, setIsVerificationInProgress, } = useInternalDynamicContext();
|
|
29
29
|
const { handleWalletsToConnect } = useHandleWalletsToConnect();
|
|
30
30
|
const verifyWallet = useVerifyWallet({
|
|
@@ -52,7 +52,13 @@ const useConnectAndSignSplitSteps = () => {
|
|
|
52
52
|
return;
|
|
53
53
|
}
|
|
54
54
|
if ((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.security.hCaptcha) === null || _a === void 0 ? void 0 : _a.enabled) {
|
|
55
|
-
|
|
55
|
+
engageCaptcha({
|
|
56
|
+
authMethod: 'wallet',
|
|
57
|
+
onCaptchaSuccess: (_captchaToken) => __awaiter(void 0, void 0, void 0, function* () {
|
|
58
|
+
setShowAuthFlow(true);
|
|
59
|
+
setView('pending-signature');
|
|
60
|
+
}),
|
|
61
|
+
});
|
|
56
62
|
return;
|
|
57
63
|
}
|
|
58
64
|
setShowAuthFlow(true);
|
|
@@ -77,7 +83,7 @@ const useConnectAndSignSplitSteps = () => {
|
|
|
77
83
|
return;
|
|
78
84
|
}
|
|
79
85
|
yield verifyWallet({
|
|
80
|
-
captchaToken,
|
|
86
|
+
captchaToken: getCaptchaToken(),
|
|
81
87
|
publicWalletAddress,
|
|
82
88
|
walletConnector,
|
|
83
89
|
});
|
package/src/lib/utils/hooks/authenticationHooks/useSignConnectOnlyUser/useSignConnectOnlyUser.cjs
CHANGED
|
@@ -19,11 +19,13 @@ require('../../../../shared/utils/classes/storage/localStorage.cjs');
|
|
|
19
19
|
require('viem');
|
|
20
20
|
require('@dynamic-labs/utils');
|
|
21
21
|
require('../../../../shared/consts/index.cjs');
|
|
22
|
+
var CaptchaContext = require('../../../../context/CaptchaContext/CaptchaContext.cjs');
|
|
22
23
|
|
|
23
24
|
const useSignConnectOnlyUser = () => {
|
|
24
25
|
const { setView } = ViewContext.useViewContext();
|
|
25
26
|
const { setErrorMessage } = ErrorContext.useErrorContext();
|
|
26
|
-
const {
|
|
27
|
+
const { getCaptchaToken } = CaptchaContext.useCaptchaContext();
|
|
28
|
+
const { connectWallet, consumeNonce, displaySiweStatement, projectSettings, environmentId, setIsSingleWalletAccount, setShowAuthFlow, setSelectedWalletConnectorKey, walletUiUtils, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
27
29
|
const verifyWallet = useVerifyWallet.useVerifyWallet({
|
|
28
30
|
consumeNonce,
|
|
29
31
|
displaySiweStatement,
|
|
@@ -41,7 +43,7 @@ const useSignConnectOnlyUser = () => {
|
|
|
41
43
|
// We need this because in connect-only we don't want to show wallet-list
|
|
42
44
|
// We don't want to show the back button in the pending signature view
|
|
43
45
|
// because we don't want to go back to the wallet-list
|
|
44
|
-
|
|
46
|
+
setSelectedWalletConnectorKey(walletConnector.key);
|
|
45
47
|
setView('pending-signature-without-back-button');
|
|
46
48
|
setShowAuthFlow(true);
|
|
47
49
|
// Wallet should be already connected at this point
|
|
@@ -51,6 +53,7 @@ const useSignConnectOnlyUser = () => {
|
|
|
51
53
|
return;
|
|
52
54
|
}
|
|
53
55
|
yield verifyWallet({
|
|
56
|
+
captchaToken: getCaptchaToken(),
|
|
54
57
|
publicWalletAddress,
|
|
55
58
|
walletConnector,
|
|
56
59
|
});
|
package/src/lib/utils/hooks/authenticationHooks/useSignConnectOnlyUser/useSignConnectOnlyUser.js
CHANGED
|
@@ -15,11 +15,13 @@ import '../../../../shared/utils/classes/storage/localStorage.js';
|
|
|
15
15
|
import 'viem';
|
|
16
16
|
import '@dynamic-labs/utils';
|
|
17
17
|
import '../../../../shared/consts/index.js';
|
|
18
|
+
import { useCaptchaContext } from '../../../../context/CaptchaContext/CaptchaContext.js';
|
|
18
19
|
|
|
19
20
|
const useSignConnectOnlyUser = () => {
|
|
20
21
|
const { setView } = useViewContext();
|
|
21
22
|
const { setErrorMessage } = useErrorContext();
|
|
22
|
-
const {
|
|
23
|
+
const { getCaptchaToken } = useCaptchaContext();
|
|
24
|
+
const { connectWallet, consumeNonce, displaySiweStatement, projectSettings, environmentId, setIsSingleWalletAccount, setShowAuthFlow, setSelectedWalletConnectorKey, walletUiUtils, } = useInternalDynamicContext();
|
|
23
25
|
const verifyWallet = useVerifyWallet({
|
|
24
26
|
consumeNonce,
|
|
25
27
|
displaySiweStatement,
|
|
@@ -37,7 +39,7 @@ const useSignConnectOnlyUser = () => {
|
|
|
37
39
|
// We need this because in connect-only we don't want to show wallet-list
|
|
38
40
|
// We don't want to show the back button in the pending signature view
|
|
39
41
|
// because we don't want to go back to the wallet-list
|
|
40
|
-
|
|
42
|
+
setSelectedWalletConnectorKey(walletConnector.key);
|
|
41
43
|
setView('pending-signature-without-back-button');
|
|
42
44
|
setShowAuthFlow(true);
|
|
43
45
|
// Wallet should be already connected at this point
|
|
@@ -47,6 +49,7 @@ const useSignConnectOnlyUser = () => {
|
|
|
47
49
|
return;
|
|
48
50
|
}
|
|
49
51
|
yield verifyWallet({
|
|
52
|
+
captchaToken: getCaptchaToken(),
|
|
50
53
|
publicWalletAddress,
|
|
51
54
|
walletConnector,
|
|
52
55
|
});
|
|
@@ -14,7 +14,6 @@ export { useConfirmationModal } from './useConfirmationModal';
|
|
|
14
14
|
export { useWalletUiUtils } from './useWalletUiUtils';
|
|
15
15
|
export { useForceUpdate } from './useForceUpdate';
|
|
16
16
|
export { useKYCFlag } from './useKYCFlag';
|
|
17
|
-
export { useMultiWalletFlag } from './useMultiWalletFlag';
|
|
18
17
|
export { useDefaultQrCode } from './useDefaultQrCode';
|
|
19
18
|
export { useWalletItemActions } from './useWalletItemActions';
|
|
20
19
|
export { usePromise } from './usePromise';
|
|
@@ -21,7 +21,7 @@ var isSupportedNetwork = require('../../functions/isSupportedNetwork/isSupported
|
|
|
21
21
|
var isProgrammableNetworkSwitchSupported = require('../../functions/isProgrammableNetworkSwitchSupported/isProgrammableNetworkSwitchSupported.cjs');
|
|
22
22
|
|
|
23
23
|
const useConnectedWalletsNetworkValidation = () => {
|
|
24
|
-
const { connectedWallets, selectedWalletConnector,
|
|
24
|
+
const { connectedWallets, selectedWalletConnector, setSelectedWalletConnectorKey, setShowAuthFlow, showAuthFlow, walletsToConnectByChain, sdkHasLoaded, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
25
25
|
const { setView } = ViewContext.useViewContext();
|
|
26
26
|
React.useEffect(() => {
|
|
27
27
|
/**
|
|
@@ -48,11 +48,11 @@ const useConnectedWalletsNetworkValidation = () => {
|
|
|
48
48
|
// If we found wallets that require a change of network
|
|
49
49
|
// then, one by one, in the first one we require a change of network.
|
|
50
50
|
const [connectedWalletWithInvalidNetwork] = connectedWalletsWithInvalidNetwork;
|
|
51
|
-
// Keeps the first wallet connectedWallet in
|
|
51
|
+
// Keeps the first wallet connectedWallet in setSelectedWalletConnectorKey
|
|
52
52
|
// This is required because NetworkNotSupported uses walletConnector to display wallet icon, address etc.
|
|
53
53
|
if (connectedWalletWithInvalidNetwork.connector.name !==
|
|
54
54
|
(selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.name)) {
|
|
55
|
-
|
|
55
|
+
setSelectedWalletConnectorKey(connectedWalletWithInvalidNetwork.connector.key);
|
|
56
56
|
}
|
|
57
57
|
const networkNotSupportedView = isProgrammableNetworkSwitchSupported.isProgrammableNetworkSwitchSupported(connectedWalletWithInvalidNetwork.connector)
|
|
58
58
|
? 'network-not-supported'
|
|
@@ -69,7 +69,7 @@ const useConnectedWalletsNetworkValidation = () => {
|
|
|
69
69
|
sdkHasLoaded,
|
|
70
70
|
connectedWallets,
|
|
71
71
|
selectedWalletConnector,
|
|
72
|
-
|
|
72
|
+
setSelectedWalletConnectorKey,
|
|
73
73
|
setShowAuthFlow,
|
|
74
74
|
setView,
|
|
75
75
|
walletsToConnectByChain,
|
|
@@ -17,7 +17,7 @@ import { isSupportedNetwork } from '../../functions/isSupportedNetwork/isSupport
|
|
|
17
17
|
import { isProgrammableNetworkSwitchSupported } from '../../functions/isProgrammableNetworkSwitchSupported/isProgrammableNetworkSwitchSupported.js';
|
|
18
18
|
|
|
19
19
|
const useConnectedWalletsNetworkValidation = () => {
|
|
20
|
-
const { connectedWallets, selectedWalletConnector,
|
|
20
|
+
const { connectedWallets, selectedWalletConnector, setSelectedWalletConnectorKey, setShowAuthFlow, showAuthFlow, walletsToConnectByChain, sdkHasLoaded, } = useInternalDynamicContext();
|
|
21
21
|
const { setView } = useViewContext();
|
|
22
22
|
useEffect(() => {
|
|
23
23
|
/**
|
|
@@ -44,11 +44,11 @@ const useConnectedWalletsNetworkValidation = () => {
|
|
|
44
44
|
// If we found wallets that require a change of network
|
|
45
45
|
// then, one by one, in the first one we require a change of network.
|
|
46
46
|
const [connectedWalletWithInvalidNetwork] = connectedWalletsWithInvalidNetwork;
|
|
47
|
-
// Keeps the first wallet connectedWallet in
|
|
47
|
+
// Keeps the first wallet connectedWallet in setSelectedWalletConnectorKey
|
|
48
48
|
// This is required because NetworkNotSupported uses walletConnector to display wallet icon, address etc.
|
|
49
49
|
if (connectedWalletWithInvalidNetwork.connector.name !==
|
|
50
50
|
(selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.name)) {
|
|
51
|
-
|
|
51
|
+
setSelectedWalletConnectorKey(connectedWalletWithInvalidNetwork.connector.key);
|
|
52
52
|
}
|
|
53
53
|
const networkNotSupportedView = isProgrammableNetworkSwitchSupported(connectedWalletWithInvalidNetwork.connector)
|
|
54
54
|
? 'network-not-supported'
|
|
@@ -65,7 +65,7 @@ const useConnectedWalletsNetworkValidation = () => {
|
|
|
65
65
|
sdkHasLoaded,
|
|
66
66
|
connectedWallets,
|
|
67
67
|
selectedWalletConnector,
|
|
68
|
-
|
|
68
|
+
setSelectedWalletConnectorKey,
|
|
69
69
|
setShowAuthFlow,
|
|
70
70
|
setView,
|
|
71
71
|
walletsToConnectByChain,
|
|
@@ -10,6 +10,19 @@ var ViewContext = require('../../../context/ViewContext/ViewContext.cjs');
|
|
|
10
10
|
var useWalletItemActions = require('../useWalletItemActions/useWalletItemActions.cjs');
|
|
11
11
|
var useConnectWithEmail = require('../useConnectWithEmail/useConnectWithEmail.cjs');
|
|
12
12
|
var api = require('../../../data/api.cjs');
|
|
13
|
+
require('../../../shared/logger.cjs');
|
|
14
|
+
require('@dynamic-labs/iconic');
|
|
15
|
+
require('@dynamic-labs/wallet-connector-core');
|
|
16
|
+
require('react/jsx-runtime');
|
|
17
|
+
require('react');
|
|
18
|
+
require('@dynamic-labs/wallet-book');
|
|
19
|
+
require('../../constants/colors.cjs');
|
|
20
|
+
require('../../../shared/utils/classes/storage/localStorage.cjs');
|
|
21
|
+
require('viem');
|
|
22
|
+
require('@dynamic-labs/utils');
|
|
23
|
+
require('../../../shared/consts/index.cjs');
|
|
24
|
+
require('@dynamic-labs/multi-wallet');
|
|
25
|
+
var isTurnkeyEnabled = require('../../functions/isTurnkeyEnabled/isTurnkeyEnabled.cjs');
|
|
13
26
|
|
|
14
27
|
const useEmailProvider = ({ emailWalletConnector }) => {
|
|
15
28
|
const { projectSettings, environmentId } = useInternalDynamicContext.useInternalDynamicContext();
|
|
@@ -26,8 +39,9 @@ const useEmailProvider = ({ emailWalletConnector }) => {
|
|
|
26
39
|
Boolean(providers === null || providers === void 0 ? void 0 : providers.filter((provider) => provider.enabledAt &&
|
|
27
40
|
(provider.provider === sdkApi.ProviderEnum.MagicLink ||
|
|
28
41
|
provider.provider === sdkApi.ProviderEnum.Blocto)).length);
|
|
29
|
-
const handleEmailOnlyLoginSubmit = (emailInput) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
42
|
+
const handleEmailOnlyLoginSubmit = (emailInput, captchaToken) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
30
43
|
const { email, verificationUUID } = yield api.createEmailVerification({
|
|
44
|
+
captchaToken,
|
|
31
45
|
email: emailInput,
|
|
32
46
|
environmentId,
|
|
33
47
|
});
|
|
@@ -38,17 +52,37 @@ const useEmailProvider = ({ emailWalletConnector }) => {
|
|
|
38
52
|
const handleMagicLinkOrBloctoSubmit = (emailInput) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
39
53
|
yield connectWithEmail(emailInput);
|
|
40
54
|
});
|
|
41
|
-
const submitEmail = (emailInput) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
55
|
+
const submitEmail = (emailInput, captchaToken) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
42
56
|
if (isMagicOrBloctoEnabled) {
|
|
43
57
|
yield handleMagicLinkOrBloctoSubmit(emailInput);
|
|
44
58
|
return;
|
|
45
59
|
}
|
|
46
|
-
yield handleEmailOnlyLoginSubmit(emailInput);
|
|
60
|
+
yield handleEmailOnlyLoginSubmit(emailInput, captchaToken);
|
|
61
|
+
});
|
|
62
|
+
const handleEmailSubmitWithOptionalCaptcha = (emailInput, captchaToken) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
63
|
+
if ((emailWalletConnector !== undefined ||
|
|
64
|
+
isTurnkeyEnabled.isTurnkeyEnabled(projectSettings)) &&
|
|
65
|
+
(projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.confirmEmailProviderForVerify)) {
|
|
66
|
+
// see: https://linear.app/dynamic-labs/issue/DYN-2517
|
|
67
|
+
// if confirmWalletTransfers setting is true, check api first to confirm emailProvider
|
|
68
|
+
const { emailProvider } = yield api.getEmailProvider({
|
|
69
|
+
email: emailInput,
|
|
70
|
+
environmentId,
|
|
71
|
+
});
|
|
72
|
+
// For v0.19 we will support emailOnly and Dynamic as email providers
|
|
73
|
+
// For v0.20/v1 we need to remove emailOnly and leave Dynamic as the only one email provider
|
|
74
|
+
// Ticket: https://linear.app/dynamic-labs/issue/GVTY-213/remove-emailonly-as-a-provider-from-sdk
|
|
75
|
+
if (emailProvider === sdkApi.ProviderEnum.EmailOnly ||
|
|
76
|
+
emailProvider === sdkApi.ProviderEnum.Dynamic) {
|
|
77
|
+
yield handleEmailOnlyLoginSubmit(emailInput, captchaToken);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
yield submitEmail(emailInput, captchaToken);
|
|
47
82
|
});
|
|
48
83
|
return {
|
|
49
|
-
|
|
84
|
+
handleEmailSubmitWithOptionalCaptcha,
|
|
50
85
|
isEmailProviderLoading,
|
|
51
|
-
submitEmail,
|
|
52
86
|
};
|
|
53
87
|
};
|
|
54
88
|
|
|
@@ -3,8 +3,7 @@ type Props = {
|
|
|
3
3
|
emailWalletConnector: IEmailWalletConnector | undefined;
|
|
4
4
|
};
|
|
5
5
|
export declare const useEmailProvider: ({ emailWalletConnector }: Props) => {
|
|
6
|
-
|
|
6
|
+
handleEmailSubmitWithOptionalCaptcha: (emailInput: string, captchaToken?: string) => Promise<void>;
|
|
7
7
|
isEmailProviderLoading: boolean;
|
|
8
|
-
submitEmail: (emailInput: string) => Promise<void>;
|
|
9
8
|
};
|
|
10
9
|
export {};
|
|
@@ -5,7 +5,20 @@ import { useEmailVerificationContext } from '../../../context/EmailVerificationC
|
|
|
5
5
|
import { useViewContext } from '../../../context/ViewContext/ViewContext.js';
|
|
6
6
|
import { useWalletItemActions } from '../useWalletItemActions/useWalletItemActions.js';
|
|
7
7
|
import { useConnectWithEmail } from '../useConnectWithEmail/useConnectWithEmail.js';
|
|
8
|
-
import { createEmailVerification } from '../../../data/api.js';
|
|
8
|
+
import { getEmailProvider, createEmailVerification } from '../../../data/api.js';
|
|
9
|
+
import '../../../shared/logger.js';
|
|
10
|
+
import '@dynamic-labs/iconic';
|
|
11
|
+
import '@dynamic-labs/wallet-connector-core';
|
|
12
|
+
import 'react/jsx-runtime';
|
|
13
|
+
import 'react';
|
|
14
|
+
import '@dynamic-labs/wallet-book';
|
|
15
|
+
import '../../constants/colors.js';
|
|
16
|
+
import '../../../shared/utils/classes/storage/localStorage.js';
|
|
17
|
+
import 'viem';
|
|
18
|
+
import '@dynamic-labs/utils';
|
|
19
|
+
import '../../../shared/consts/index.js';
|
|
20
|
+
import '@dynamic-labs/multi-wallet';
|
|
21
|
+
import { isTurnkeyEnabled } from '../../functions/isTurnkeyEnabled/isTurnkeyEnabled.js';
|
|
9
22
|
|
|
10
23
|
const useEmailProvider = ({ emailWalletConnector }) => {
|
|
11
24
|
const { projectSettings, environmentId } = useInternalDynamicContext();
|
|
@@ -22,8 +35,9 @@ const useEmailProvider = ({ emailWalletConnector }) => {
|
|
|
22
35
|
Boolean(providers === null || providers === void 0 ? void 0 : providers.filter((provider) => provider.enabledAt &&
|
|
23
36
|
(provider.provider === ProviderEnum.MagicLink ||
|
|
24
37
|
provider.provider === ProviderEnum.Blocto)).length);
|
|
25
|
-
const handleEmailOnlyLoginSubmit = (emailInput) => __awaiter(void 0, void 0, void 0, function* () {
|
|
38
|
+
const handleEmailOnlyLoginSubmit = (emailInput, captchaToken) => __awaiter(void 0, void 0, void 0, function* () {
|
|
26
39
|
const { email, verificationUUID } = yield createEmailVerification({
|
|
40
|
+
captchaToken,
|
|
27
41
|
email: emailInput,
|
|
28
42
|
environmentId,
|
|
29
43
|
});
|
|
@@ -34,17 +48,37 @@ const useEmailProvider = ({ emailWalletConnector }) => {
|
|
|
34
48
|
const handleMagicLinkOrBloctoSubmit = (emailInput) => __awaiter(void 0, void 0, void 0, function* () {
|
|
35
49
|
yield connectWithEmail(emailInput);
|
|
36
50
|
});
|
|
37
|
-
const submitEmail = (emailInput) => __awaiter(void 0, void 0, void 0, function* () {
|
|
51
|
+
const submitEmail = (emailInput, captchaToken) => __awaiter(void 0, void 0, void 0, function* () {
|
|
38
52
|
if (isMagicOrBloctoEnabled) {
|
|
39
53
|
yield handleMagicLinkOrBloctoSubmit(emailInput);
|
|
40
54
|
return;
|
|
41
55
|
}
|
|
42
|
-
yield handleEmailOnlyLoginSubmit(emailInput);
|
|
56
|
+
yield handleEmailOnlyLoginSubmit(emailInput, captchaToken);
|
|
57
|
+
});
|
|
58
|
+
const handleEmailSubmitWithOptionalCaptcha = (emailInput, captchaToken) => __awaiter(void 0, void 0, void 0, function* () {
|
|
59
|
+
if ((emailWalletConnector !== undefined ||
|
|
60
|
+
isTurnkeyEnabled(projectSettings)) &&
|
|
61
|
+
(projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.confirmEmailProviderForVerify)) {
|
|
62
|
+
// see: https://linear.app/dynamic-labs/issue/DYN-2517
|
|
63
|
+
// if confirmWalletTransfers setting is true, check api first to confirm emailProvider
|
|
64
|
+
const { emailProvider } = yield getEmailProvider({
|
|
65
|
+
email: emailInput,
|
|
66
|
+
environmentId,
|
|
67
|
+
});
|
|
68
|
+
// For v0.19 we will support emailOnly and Dynamic as email providers
|
|
69
|
+
// For v0.20/v1 we need to remove emailOnly and leave Dynamic as the only one email provider
|
|
70
|
+
// Ticket: https://linear.app/dynamic-labs/issue/GVTY-213/remove-emailonly-as-a-provider-from-sdk
|
|
71
|
+
if (emailProvider === ProviderEnum.EmailOnly ||
|
|
72
|
+
emailProvider === ProviderEnum.Dynamic) {
|
|
73
|
+
yield handleEmailOnlyLoginSubmit(emailInput, captchaToken);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
yield submitEmail(emailInput, captchaToken);
|
|
43
78
|
});
|
|
44
79
|
return {
|
|
45
|
-
|
|
80
|
+
handleEmailSubmitWithOptionalCaptcha,
|
|
46
81
|
isEmailProviderLoading,
|
|
47
|
-
submitEmail,
|
|
48
82
|
};
|
|
49
83
|
};
|
|
50
84
|
|
|
@@ -25,6 +25,7 @@ var isEmbeddedWalletPresent = require('../../functions/isEmbeddedWalletPresent/i
|
|
|
25
25
|
var findEmbeddedWalletFromVerifiedCredentials = require('../../functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.cjs');
|
|
26
26
|
var findTurnkeyWallet = require('../../functions/findTurnkeyWallet/findTurnkeyWallet.cjs');
|
|
27
27
|
var getUserWalletsFromVerifiedCredentials = require('../../functions/getUserWalletsFromVerifiedCredentials/getUserWalletsFromVerifiedCredentials.cjs');
|
|
28
|
+
var smartWallet = require('../useWalletConnectors/utils/smartWallet/smartWallet.cjs');
|
|
28
29
|
|
|
29
30
|
// Hook exposed to customers and used internally to trigger embedded wallet creation
|
|
30
31
|
const useEmbeddedWallet = () => {
|
|
@@ -68,7 +69,18 @@ const useEmbeddedWallet = () => {
|
|
|
68
69
|
// if user already has embedded wallet, set it as primary wallet
|
|
69
70
|
if (decodedJwt) {
|
|
70
71
|
(_b = turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector) === null || _b === void 0 ? void 0 : _b.setVerifiedCredentials(decodedJwt.verifiedCredentials);
|
|
71
|
-
|
|
72
|
+
const smartWallet$1 = smartWallet.findSmartWallet(embeddedWalletVerifiedCredential, decodedJwt.verifiedCredentials);
|
|
73
|
+
if (smartWallet$1) {
|
|
74
|
+
setPrimaryWalletId(smartWallet$1.id);
|
|
75
|
+
smartWallet.initializeSmartWallet({
|
|
76
|
+
account: smartWallet$1,
|
|
77
|
+
verifiedCredentials: decodedJwt.verifiedCredentials,
|
|
78
|
+
walletOptions: wallets,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
setPrimaryWalletId(embeddedWalletVerifiedCredential.id);
|
|
83
|
+
}
|
|
72
84
|
}
|
|
73
85
|
const passkeyWallet = {
|
|
74
86
|
address: (yield ((_c = turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector) === null || _c === void 0 ? void 0 : _c.fetchPublicAddress())) || '',
|
|
@@ -21,6 +21,7 @@ import { isEmbeddedWalletPresent } from '../../functions/isEmbeddedWalletPresent
|
|
|
21
21
|
import { findEmbeddedWalletFromVerifiedCredentials } from '../../functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.js';
|
|
22
22
|
import { findTurnkeyWallet } from '../../functions/findTurnkeyWallet/findTurnkeyWallet.js';
|
|
23
23
|
import { getUserWalletsFromVerifiedCredentials } from '../../functions/getUserWalletsFromVerifiedCredentials/getUserWalletsFromVerifiedCredentials.js';
|
|
24
|
+
import { findSmartWallet, initializeSmartWallet } from '../useWalletConnectors/utils/smartWallet/smartWallet.js';
|
|
24
25
|
|
|
25
26
|
// Hook exposed to customers and used internally to trigger embedded wallet creation
|
|
26
27
|
const useEmbeddedWallet = () => {
|
|
@@ -64,7 +65,18 @@ const useEmbeddedWallet = () => {
|
|
|
64
65
|
// if user already has embedded wallet, set it as primary wallet
|
|
65
66
|
if (decodedJwt) {
|
|
66
67
|
(_b = turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector) === null || _b === void 0 ? void 0 : _b.setVerifiedCredentials(decodedJwt.verifiedCredentials);
|
|
67
|
-
|
|
68
|
+
const smartWallet = findSmartWallet(embeddedWalletVerifiedCredential, decodedJwt.verifiedCredentials);
|
|
69
|
+
if (smartWallet) {
|
|
70
|
+
setPrimaryWalletId(smartWallet.id);
|
|
71
|
+
initializeSmartWallet({
|
|
72
|
+
account: smartWallet,
|
|
73
|
+
verifiedCredentials: decodedJwt.verifiedCredentials,
|
|
74
|
+
walletOptions: wallets,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
setPrimaryWalletId(embeddedWalletVerifiedCredential.id);
|
|
79
|
+
}
|
|
68
80
|
}
|
|
69
81
|
const passkeyWallet = {
|
|
70
82
|
address: (yield ((_c = turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector) === null || _c === void 0 ? void 0 : _c.fetchPublicAddress())) || '',
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var utils = require('@dynamic-labs/utils');
|
|
7
|
+
var validators = require('../../../context/DynamicContext/validators.cjs');
|
|
7
8
|
var api = require('../../../data/api.cjs');
|
|
8
9
|
require('@dynamic-labs/sdk-api');
|
|
9
10
|
require('../../../shared/logger.cjs');
|
|
@@ -18,7 +19,7 @@ var localStorage$1 = require('../../../shared/utils/classes/storage/localStorage
|
|
|
18
19
|
require('viem');
|
|
19
20
|
var useLocalStorage = require('../../../shared/utils/hooks/useLocalStorage/useLocalStorage.cjs');
|
|
20
21
|
require('../../../shared/consts/index.cjs');
|
|
21
|
-
var
|
|
22
|
+
var usePrevious = require('../usePrevious/usePrevious.cjs');
|
|
22
23
|
var mergeCustomerEvmNetworksWithServerNetworks = require('./utils/mergeCustomerEvmNetworksWithServerNetworks/mergeCustomerEvmNetworksWithServerNetworks.cjs');
|
|
23
24
|
|
|
24
25
|
const MAX_RETRIES = 2;
|
|
@@ -54,6 +55,14 @@ const useFetchNetworkConfigurations = ({ authToken, environmentId, evmNetworks:
|
|
|
54
55
|
handleRemoveLsNetworks();
|
|
55
56
|
}
|
|
56
57
|
}, [authToken, handleRemoveLsNetworks]);
|
|
58
|
+
// When customer networks change, we need to update ls networks
|
|
59
|
+
const previousCustomerEvmNetworks = usePrevious.usePrevious(customerEvmNetworks);
|
|
60
|
+
React.useEffect(() => {
|
|
61
|
+
if (JSON.stringify(customerEvmNetworks) ===
|
|
62
|
+
JSON.stringify(previousCustomerEvmNetworks))
|
|
63
|
+
return;
|
|
64
|
+
setlsNetworksExists(false);
|
|
65
|
+
}, [customerEvmNetworks, previousCustomerEvmNetworks]);
|
|
57
66
|
React.useEffect(() => {
|
|
58
67
|
var _a, _b;
|
|
59
68
|
if (lsNetworksExists && customerEvmNetworksJson && !completed) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useState, useCallback, useEffect } from 'react';
|
|
2
2
|
import { DynamicError } from '@dynamic-labs/utils';
|
|
3
|
+
import { validateLocalStorageExpiry } from '../../../context/DynamicContext/validators.js';
|
|
3
4
|
import { fetchNetworkSettings } from '../../../data/api.js';
|
|
4
5
|
import '@dynamic-labs/sdk-api';
|
|
5
6
|
import '../../../shared/logger.js';
|
|
@@ -14,7 +15,7 @@ import { LocalStorage } from '../../../shared/utils/classes/storage/localStorage
|
|
|
14
15
|
import 'viem';
|
|
15
16
|
import { useLocalStorage } from '../../../shared/utils/hooks/useLocalStorage/useLocalStorage.js';
|
|
16
17
|
import '../../../shared/consts/index.js';
|
|
17
|
-
import {
|
|
18
|
+
import { usePrevious } from '../usePrevious/usePrevious.js';
|
|
18
19
|
import { mergeCustomerEvmNetworksWithServerNetworks } from './utils/mergeCustomerEvmNetworksWithServerNetworks/mergeCustomerEvmNetworksWithServerNetworks.js';
|
|
19
20
|
|
|
20
21
|
const MAX_RETRIES = 2;
|
|
@@ -50,6 +51,14 @@ const useFetchNetworkConfigurations = ({ authToken, environmentId, evmNetworks:
|
|
|
50
51
|
handleRemoveLsNetworks();
|
|
51
52
|
}
|
|
52
53
|
}, [authToken, handleRemoveLsNetworks]);
|
|
54
|
+
// When customer networks change, we need to update ls networks
|
|
55
|
+
const previousCustomerEvmNetworks = usePrevious(customerEvmNetworks);
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
if (JSON.stringify(customerEvmNetworks) ===
|
|
58
|
+
JSON.stringify(previousCustomerEvmNetworks))
|
|
59
|
+
return;
|
|
60
|
+
setlsNetworksExists(false);
|
|
61
|
+
}, [customerEvmNetworks, previousCustomerEvmNetworks]);
|
|
53
62
|
useEffect(() => {
|
|
54
63
|
var _a, _b;
|
|
55
64
|
if (lsNetworksExists && customerEvmNetworksJson && !completed) {
|
|
@@ -14,9 +14,10 @@ require('../../../context/ViewContext/ViewContext.cjs');
|
|
|
14
14
|
require('@dynamic-labs/wallet-book');
|
|
15
15
|
var localStorage = require('../../constants/localStorage.cjs');
|
|
16
16
|
require('../../constants/colors.cjs');
|
|
17
|
-
require('../../../shared/utils/classes/storage/localStorage.cjs');
|
|
17
|
+
var localStorage$1 = require('../../../shared/utils/classes/storage/localStorage.cjs');
|
|
18
18
|
require('viem');
|
|
19
19
|
var useLocalStorage = require('../../../shared/utils/hooks/useLocalStorage/useLocalStorage.cjs');
|
|
20
|
+
var useEffectOnce = require('../../../shared/utils/hooks/useEffectOnce/useEffectOnce.cjs');
|
|
20
21
|
require('../../../shared/consts/index.cjs');
|
|
21
22
|
var validators = require('../../../context/DynamicContext/validators.cjs');
|
|
22
23
|
|
|
@@ -81,6 +82,12 @@ const useFetchProjectSettings = ({ authToken, environmentId, maxRetries = 2, dyn
|
|
|
81
82
|
}
|
|
82
83
|
}, [environmentId, isLoading, lsSettingsExists, maxRetries, retries]);
|
|
83
84
|
const settingsWithOverride = React.useMemo(() => overrideSettings(lsSettings === null || lsSettings === void 0 ? void 0 : lsSettings.settings, dynamicContextProps.settings.overrides), [lsSettings === null || lsSettings === void 0 ? void 0 : lsSettings.settings, dynamicContextProps.settings.overrides]);
|
|
85
|
+
useEffectOnce.useEffectOnce(() => {
|
|
86
|
+
const [connectedWalletData] = localStorage$1.LocalStorage.getFromLS(localStorage.CONNECTED_WALLETS_INFO) || [];
|
|
87
|
+
if (!authToken && !connectedWalletData) {
|
|
88
|
+
removeLsSettings();
|
|
89
|
+
}
|
|
90
|
+
});
|
|
84
91
|
return {
|
|
85
92
|
isLoading,
|
|
86
93
|
projectSettings: settingsWithOverride,
|
|
@@ -8,11 +8,12 @@ import '@dynamic-labs/wallet-connector-core';
|
|
|
8
8
|
import 'react/jsx-runtime';
|
|
9
9
|
import '../../../context/ViewContext/ViewContext.js';
|
|
10
10
|
import '@dynamic-labs/wallet-book';
|
|
11
|
-
import { PROJECT_SETTINGS_STORAGE_KEY } from '../../constants/localStorage.js';
|
|
11
|
+
import { PROJECT_SETTINGS_STORAGE_KEY, CONNECTED_WALLETS_INFO } from '../../constants/localStorage.js';
|
|
12
12
|
import '../../constants/colors.js';
|
|
13
|
-
import '../../../shared/utils/classes/storage/localStorage.js';
|
|
13
|
+
import { LocalStorage } from '../../../shared/utils/classes/storage/localStorage.js';
|
|
14
14
|
import 'viem';
|
|
15
15
|
import { useLocalStorage } from '../../../shared/utils/hooks/useLocalStorage/useLocalStorage.js';
|
|
16
|
+
import { useEffectOnce } from '../../../shared/utils/hooks/useEffectOnce/useEffectOnce.js';
|
|
16
17
|
import '../../../shared/consts/index.js';
|
|
17
18
|
import { validateLocalStorageExpiry } from '../../../context/DynamicContext/validators.js';
|
|
18
19
|
|
|
@@ -77,6 +78,12 @@ const useFetchProjectSettings = ({ authToken, environmentId, maxRetries = 2, dyn
|
|
|
77
78
|
}
|
|
78
79
|
}, [environmentId, isLoading, lsSettingsExists, maxRetries, retries]);
|
|
79
80
|
const settingsWithOverride = useMemo(() => overrideSettings(lsSettings === null || lsSettings === void 0 ? void 0 : lsSettings.settings, dynamicContextProps.settings.overrides), [lsSettings === null || lsSettings === void 0 ? void 0 : lsSettings.settings, dynamicContextProps.settings.overrides]);
|
|
81
|
+
useEffectOnce(() => {
|
|
82
|
+
const [connectedWalletData] = LocalStorage.getFromLS(CONNECTED_WALLETS_INFO) || [];
|
|
83
|
+
if (!authToken && !connectedWalletData) {
|
|
84
|
+
removeLsSettings();
|
|
85
|
+
}
|
|
86
|
+
});
|
|
80
87
|
return {
|
|
81
88
|
isLoading,
|
|
82
89
|
projectSettings: settingsWithOverride,
|