@dynamic-labs/sdk-react-core 2.1.0-alpha.1 → 2.1.0-alpha.11
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 +92 -0
- package/package.cjs +2 -2
- package/package.js +2 -2
- package/package.json +13 -14
- package/src/index.cjs +8 -2
- package/src/index.d.ts +2 -1
- package/src/index.js +4 -1
- package/src/lib/Main.cjs +7 -0
- package/src/lib/Main.js +7 -0
- package/src/lib/components/Alert/Alert.cjs +2 -2
- package/src/lib/components/Alert/Alert.js +2 -2
- package/src/lib/components/Alert/Alert.types.d.ts +1 -0
- package/src/lib/components/EmailForm/EmailForm.cjs +1 -1
- package/src/lib/components/EmailForm/EmailForm.js +1 -1
- package/src/lib/components/PhoneNumberField/PhoneNumberField.cjs +1 -1
- package/src/lib/components/PhoneNumberField/PhoneNumberField.js +1 -1
- package/src/lib/components/Portal/Portal.cjs +2 -1
- package/src/lib/components/Portal/Portal.js +2 -1
- package/src/lib/components/RadioButton/RadioButton.cjs +14 -0
- package/src/lib/components/RadioButton/RadioButton.d.ts +5 -0
- package/src/lib/components/RadioButton/RadioButton.js +10 -0
- package/src/lib/components/RadioButton/index.d.ts +1 -0
- package/src/lib/components/Tooltip/Tooltip.cjs +2 -1
- package/src/lib/components/Tooltip/Tooltip.js +2 -1
- package/src/lib/components/UserProfile/parts/UserProfileField/UserProfileField.cjs +1 -1
- package/src/lib/components/UserProfile/parts/UserProfileField/UserProfileField.d.ts +2 -1
- package/src/lib/components/UserProfile/parts/UserProfileField/UserProfileField.js +1 -1
- package/src/lib/components/index.d.ts +1 -0
- package/src/lib/context/DynamicContext/DynamicContext.cjs +23 -7
- package/src/lib/context/DynamicContext/DynamicContext.d.ts +5 -0
- package/src/lib/context/DynamicContext/DynamicContext.js +20 -4
- package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.cjs +2 -2
- package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.js +2 -2
- package/src/lib/context/DynamicContext/types/index.d.ts +0 -1
- package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.cjs +5 -2
- package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.js +5 -2
- package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.cjs +2 -1
- package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.d.ts +1 -1
- package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.js +2 -1
- package/src/lib/context/ErrorBoundary/ErrorBoundary.cjs +64 -0
- package/src/lib/context/ErrorBoundary/ErrorBoundary.d.ts +3 -0
- package/src/lib/context/ErrorBoundary/ErrorBoundary.js +60 -0
- package/src/lib/context/ErrorBoundary/ErrorBoundaryBase.cjs +40 -0
- package/src/lib/context/ErrorBoundary/ErrorBoundaryBase.d.ts +14 -0
- package/src/lib/context/ErrorBoundary/ErrorBoundaryBase.js +36 -0
- package/src/lib/context/ErrorBoundary/ErrorBoundaryContext.cjs +24 -0
- package/src/lib/context/ErrorBoundary/ErrorBoundaryContext.d.ts +5 -0
- package/src/lib/context/ErrorBoundary/ErrorBoundaryContext.js +18 -0
- package/src/lib/context/ErrorBoundary/ErrorBoundaryExclude.cjs +17 -0
- package/src/lib/context/ErrorBoundary/ErrorBoundaryExclude.d.ts +4 -0
- package/src/lib/context/ErrorBoundary/ErrorBoundaryExclude.js +13 -0
- package/src/lib/context/ErrorBoundary/ErrorBoundaryInclude.cjs +17 -0
- package/src/lib/context/ErrorBoundary/ErrorBoundaryInclude.d.ts +4 -0
- package/src/lib/context/ErrorBoundary/ErrorBoundaryInclude.js +13 -0
- package/src/lib/context/ErrorBoundary/index.d.ts +3 -0
- package/src/lib/context/ErrorBoundary/types.d.ts +13 -0
- package/src/lib/context/ViewContext/ViewContext.cjs +2 -2
- package/src/lib/context/ViewContext/ViewContext.js +2 -2
- package/src/lib/context/ViewContext/types/index.d.ts +7 -2
- package/src/lib/data/api/chains/balances.cjs +38 -0
- package/src/lib/data/api/chains/balances.d.ts +8 -0
- package/src/lib/data/api/chains/balances.js +34 -0
- package/src/lib/data/api/chains/index.d.ts +1 -0
- package/src/lib/data/api/user/user.cjs +16 -0
- package/src/lib/data/api/user/user.js +16 -1
- package/src/lib/data/api/wallets/wallets.cjs +26 -6
- package/src/lib/data/api/wallets/wallets.d.ts +4 -0
- package/src/lib/data/api/wallets/wallets.js +26 -7
- package/src/lib/events/dynamicEvents.d.ts +1 -1
- package/src/lib/layout/DynamicAuthLayout/Header/header.cjs +6 -0
- package/src/lib/layout/DynamicAuthLayout/Header/header.js +6 -0
- package/src/lib/locale/en/translation.cjs +45 -4
- package/src/lib/locale/en/translation.d.ts +44 -3
- package/src/lib/locale/en/translation.js +45 -4
- package/src/lib/shared/types/dynamicEventsCallbacks.d.ts +2 -1
- package/src/lib/shared/types/general.d.ts +1 -0
- package/src/lib/shared/utils/classes/storage/localStorage.cjs +2 -2
- package/src/lib/shared/utils/classes/storage/localStorage.js +2 -2
- package/src/lib/styles/index.shadow.cjs +1 -1
- package/src/lib/styles/index.shadow.js +1 -1
- package/src/lib/utils/constants/errors.cjs +2 -2
- package/src/lib/utils/constants/errors.d.ts +1 -0
- package/src/lib/utils/constants/errors.js +2 -2
- package/src/lib/utils/functions/addPasskeyIdentifierToWalletConnector/addPasskeyIdentifierToWalletConnector.cjs +14 -0
- package/src/lib/utils/functions/addPasskeyIdentifierToWalletConnector/addPasskeyIdentifierToWalletConnector.d.ts +3 -0
- package/src/lib/utils/functions/addPasskeyIdentifierToWalletConnector/addPasskeyIdentifierToWalletConnector.js +10 -0
- package/src/lib/utils/functions/addPasskeyIdentifierToWalletConnector/index.d.ts +1 -0
- package/src/lib/utils/functions/createUserProfile/createUserProfile.cjs +1 -2
- package/src/lib/utils/functions/createUserProfile/createUserProfile.js +1 -2
- package/src/lib/utils/functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.cjs +3 -4
- package/src/lib/utils/functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.d.ts +1 -1
- package/src/lib/utils/functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.js +4 -5
- package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.cjs +12 -9
- package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.d.ts +8 -2
- package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.js +13 -10
- package/src/lib/utils/functions/findTurnkeyWallet/index.d.ts +1 -1
- package/src/lib/utils/functions/getUserVerifiedCredentialType/getUserVerifiedCredentialType.cjs +5 -5
- package/src/lib/utils/functions/getUserVerifiedCredentialType/getUserVerifiedCredentialType.d.ts +3 -2
- package/src/lib/utils/functions/getUserVerifiedCredentialType/getUserVerifiedCredentialType.js +5 -5
- package/src/lib/utils/functions/hasEmbeddedWallet/hasEmbeddedWallet.cjs +7 -2
- package/src/lib/utils/functions/hasEmbeddedWallet/hasEmbeddedWallet.js +7 -2
- package/src/lib/utils/functions/index.d.ts +2 -1
- package/src/lib/utils/functions/serializeWalletConnectors/index.d.ts +1 -0
- package/src/lib/utils/functions/serializeWalletConnectors/serializeWalletConnectors.cjs +32 -0
- package/src/lib/utils/functions/serializeWalletConnectors/serializeWalletConnectors.d.ts +2 -0
- package/src/lib/utils/functions/serializeWalletConnectors/serializeWalletConnectors.js +28 -0
- package/src/lib/utils/hooks/index.d.ts +2 -0
- package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.cjs +22 -17
- package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.js +22 -17
- package/src/lib/utils/hooks/useConfirmationModal/useConfirmationModal.cjs +2 -1
- package/src/lib/utils/hooks/useConfirmationModal/useConfirmationModal.js +2 -1
- package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.cjs +22 -18
- package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.d.ts +7 -2
- package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.js +22 -18
- package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.cjs +8 -0
- package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.js +8 -0
- package/src/lib/utils/hooks/useDynamicScopes/useDynamicScopes.cjs +3 -3
- package/src/lib/utils/hooks/useDynamicScopes/useDynamicScopes.js +3 -3
- package/src/lib/utils/hooks/useElementById/useElementById.cjs +33 -18
- package/src/lib/utils/hooks/useElementById/useElementById.d.ts +3 -1
- package/src/lib/utils/hooks/useElementById/useElementById.js +33 -18
- package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +46 -11
- package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.d.ts +23 -2
- package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +46 -11
- package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.cjs +6 -6
- package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.d.ts +1 -1
- package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.js +6 -6
- package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.cjs +13 -9
- package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.d.ts +3 -2
- package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.js +13 -9
- package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/constants.cjs +4 -0
- package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/constants.d.ts +2 -0
- package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/constants.js +3 -1
- package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.cjs +192 -50
- package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.d.ts +26 -8
- package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.js +197 -55
- package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.cjs +45 -18
- package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.d.ts +4 -1
- package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.js +45 -18
- package/src/lib/utils/hooks/useIsTurnkeyWallet/useIsTurnkeyWallet.cjs +2 -2
- package/src/lib/utils/hooks/useIsTurnkeyWallet/useIsTurnkeyWallet.js +2 -2
- package/src/lib/utils/hooks/useMergeUserAccounts/index.d.ts +1 -0
- package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.cjs +99 -0
- package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.d.ts +4 -0
- package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.js +95 -0
- package/src/lib/utils/hooks/usePasskeyRecovery/usePasskeyRecovery.cjs +2 -1
- package/src/lib/utils/hooks/usePasskeyRecovery/usePasskeyRecovery.js +2 -1
- package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.cjs +13 -4
- package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.d.ts +10 -2
- package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.js +13 -4
- package/src/lib/utils/hooks/useSendDynamicProps/useSendDynamicProps.cjs +6 -13
- package/src/lib/utils/hooks/useSendDynamicProps/useSendDynamicProps.d.ts +1 -3
- package/src/lib/utils/hooks/useSendDynamicProps/useSendDynamicProps.js +6 -12
- package/src/lib/utils/hooks/useTokenBalances/index.d.ts +1 -0
- package/src/lib/utils/hooks/useTokenBalances/useTokenBalances.cjs +141 -0
- package/src/lib/utils/hooks/useTokenBalances/useTokenBalances.d.ts +12 -0
- package/src/lib/utils/hooks/useTokenBalances/useTokenBalances.js +137 -0
- package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.cjs +5 -0
- package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.js +6 -1
- package/src/lib/utils/hooks/useWalletConnectorOptions/useWalletConnectorOptions.cjs +25 -2
- package/src/lib/utils/hooks/useWalletConnectorOptions/useWalletConnectorOptions.js +25 -2
- package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +2 -4
- package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.d.ts +2 -1
- package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +2 -4
- package/src/lib/views/CollectUserDataView/UserDataFields/UserField/UserField.cjs +3 -3
- package/src/lib/views/CollectUserDataView/UserDataFields/UserField/UserField.js +3 -3
- package/src/lib/views/CollectUserDataView/useFields.cjs +1 -0
- package/src/lib/views/CollectUserDataView/useFields.d.ts +2 -0
- package/src/lib/views/CollectUserDataView/useFields.js +1 -0
- package/src/lib/views/EmailVerification/EmailVerification.cjs +38 -11
- package/src/lib/views/EmailVerification/EmailVerification.js +38 -11
- package/src/lib/views/EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.cjs +1 -1
- package/src/lib/views/EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.js +1 -1
- package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.cjs +6 -5
- package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.js +6 -5
- package/src/lib/views/MergeUserAccountsConflictsView/MergeUserAccountsConflictsView.cjs +126 -0
- package/src/lib/views/MergeUserAccountsConflictsView/MergeUserAccountsConflictsView.d.ts +6 -0
- package/src/lib/views/MergeUserAccountsConflictsView/MergeUserAccountsConflictsView.js +122 -0
- package/src/lib/views/MergeUserAccountsConflictsView/index.d.ts +1 -0
- package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.cjs +123 -0
- package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.d.ts +4 -0
- package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.js +119 -0
- package/src/lib/views/MergeUserAccountsView/index.d.ts +1 -0
- package/src/lib/views/MergeUserAccountsWithSameEmailView/MergeUserAccountsWithSameEmailView.cjs +3 -3
- package/src/lib/views/MergeUserAccountsWithSameEmailView/MergeUserAccountsWithSameEmailView.js +3 -3
- package/src/lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.cjs +2 -3
- package/src/lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.js +2 -3
- package/src/lib/views/Passkey/EmbeddedAuthChoiceCards/EmbeddedAuthChoiceCards.cjs +2 -1
- package/src/lib/views/Passkey/EmbeddedAuthChoiceCards/EmbeddedAuthChoiceCards.js +2 -1
- package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.cjs +9 -9
- package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.d.ts +6 -1
- package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.js +9 -9
- package/src/lib/views/Passkey/PasskeyRecovery/InitRecovery/PasskeyInitRecovery.cjs +2 -1
- package/src/lib/views/Passkey/PasskeyRecovery/InitRecovery/PasskeyInitRecovery.js +2 -1
- package/src/lib/views/Passkey/utils/{createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.cjs → createEmbeddedWalletRequest/createEmbeddedWalletRequest.cjs} +18 -19
- package/src/lib/views/Passkey/utils/{createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.d.ts → createEmbeddedWalletRequest/createEmbeddedWalletRequest.d.ts} +7 -3
- package/src/lib/views/Passkey/utils/{createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.js → createEmbeddedWalletRequest/createEmbeddedWalletRequest.js} +18 -19
- package/src/lib/views/Passkey/utils/createEmbeddedWalletRequest/index.d.ts +1 -0
- package/src/lib/views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.cjs +16 -0
- package/src/lib/views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.d.ts +2 -0
- package/src/lib/views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.js +12 -0
- package/src/lib/views/Passkey/utils/findPrimaryEmbeddedChain/index.d.ts +1 -0
- package/src/lib/views/Passkey/utils/index.d.ts +1 -2
- package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.cjs +9 -9
- package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.js +9 -9
- package/src/lib/views/WalletList/WalletList.cjs +3 -6
- package/src/lib/views/WalletList/WalletList.js +3 -6
- package/src/lib/views/WalletLockedView/WalletLockedView.cjs +2 -8
- package/src/lib/views/WalletLockedView/WalletLockedView.js +2 -8
- package/src/lib/views/viewToComponentMap.cjs +4 -0
- package/src/lib/views/viewToComponentMap.d.ts +6 -2
- package/src/lib/views/viewToComponentMap.js +4 -0
- package/src/lib/widgets/DynamicWidget/components/PromptModal/PromptModal.cjs +2 -1
- package/src/lib/widgets/DynamicWidget/components/PromptModal/PromptModal.js +2 -1
- package/src/lib/widgets/DynamicWidget/hooks/useFetchNameService/useFetchNameService.cjs +1 -1
- package/src/lib/widgets/DynamicWidget/hooks/useFetchNameService/useFetchNameService.js +1 -1
- package/src/lib/utils/functions/isEmbeddedWalletPresent/index.d.ts +0 -1
- package/src/lib/utils/functions/isEmbeddedWalletPresent/isEmbeddedWalletPresent.cjs +0 -19
- package/src/lib/utils/functions/isEmbeddedWalletPresent/isEmbeddedWalletPresent.d.ts +0 -1
- package/src/lib/utils/functions/isEmbeddedWalletPresent/isEmbeddedWalletPresent.js +0 -15
- package/src/lib/views/Passkey/utils/createEmbeddedWalletWithPasskey/index.d.ts +0 -1
- package/src/lib/views/Passkey/utils/createPregeneratedWallet/createPregeneratedWallet.cjs +0 -65
- package/src/lib/views/Passkey/utils/createPregeneratedWallet/createPregeneratedWallet.d.ts +0 -16
- package/src/lib/views/Passkey/utils/createPregeneratedWallet/createPregeneratedWallet.js +0 -61
- package/src/lib/views/Passkey/utils/createPregeneratedWallet/index.d.ts +0 -1
|
@@ -13,7 +13,8 @@ import { useElementById } from '../useElementById/useElementById.js';
|
|
|
13
13
|
* confirms or cancels the operation, and must return the ReactNode for the modal to be displayed.
|
|
14
14
|
*/
|
|
15
15
|
const useConfirmationModal = ({ elementId, }) => {
|
|
16
|
-
const
|
|
16
|
+
const { createRootElement } = useElementById();
|
|
17
|
+
const modalRootElementRef = createRootElement(elementId);
|
|
17
18
|
const [node, setNode] = useState(null);
|
|
18
19
|
const open = useCallback((builder) => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
20
|
const promise = new Promise((resolve, reject) => {
|
|
@@ -34,10 +34,10 @@ require('../../../context/AccountExistsContext/AccountExistsContext.cjs');
|
|
|
34
34
|
require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
|
|
35
35
|
require('../../../context/VerificationContext/VerificationContext.cjs');
|
|
36
36
|
require('react-dom');
|
|
37
|
-
var
|
|
37
|
+
var createEmbeddedWalletRequest = require('../../../views/Passkey/utils/createEmbeddedWalletRequest/createEmbeddedWalletRequest.cjs');
|
|
38
38
|
var findPasskeyEmailWalletConnector = require('../../../views/Passkey/utils/findPasskeyEmailWalletConnector/findPasskeyEmailWalletConnector.cjs');
|
|
39
|
-
var createPregeneratedWallet = require('../../../views/Passkey/utils/createPregeneratedWallet/createPregeneratedWallet.cjs');
|
|
40
39
|
var smartWallet = require('../useWalletConnectors/utils/smartWallet/smartWallet.cjs');
|
|
40
|
+
var findPrimaryEmbeddedChain = require('../../../views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.cjs');
|
|
41
41
|
require('../../../context/WalletContext/WalletContext.cjs');
|
|
42
42
|
require('../../../context/ThemeContext/ThemeContext.cjs');
|
|
43
43
|
require('@dynamic-labs/types');
|
|
@@ -82,34 +82,31 @@ var useInternalDynamicContext = require('../../../context/DynamicContext/useDyna
|
|
|
82
82
|
|
|
83
83
|
// This hook needs to be async that's why it's not using useMutation
|
|
84
84
|
const useCreateDynamicEmbeddedWalletMutation = () => {
|
|
85
|
-
var _a, _b
|
|
86
|
-
const { setPrimaryWalletId,
|
|
85
|
+
var _a, _b;
|
|
86
|
+
const { setPrimaryWalletId, setUser, user, setShowAuthFlow, projectSettings, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
87
87
|
const [isLoading, setIsLoading] = React.useState(false);
|
|
88
88
|
const [error, setError] = React.useState();
|
|
89
89
|
const embeddedChainConfig = ((_b = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.embeddedWallets) === null || _b === void 0 ? void 0 : _b.chainConfigurations) || [];
|
|
90
|
-
const primaryEmbeddedChain =
|
|
91
|
-
? sdkApiCore.ChainEnum.Sol
|
|
92
|
-
: sdkApiCore.ChainEnum.Evm;
|
|
90
|
+
const primaryEmbeddedChain = findPrimaryEmbeddedChain.findPrimaryEmbeddedChain(projectSettings);
|
|
93
91
|
const embeddedChains = embeddedChainConfig
|
|
94
92
|
.filter((chain) => chain.enabled)
|
|
95
93
|
.map((c) => (c.name === 'SOL' ? sdkApiCore.ChainEnum.Sol : sdkApiCore.ChainEnum.Evm));
|
|
96
|
-
const createDynamicEmbeddedWalletMutation = React.useCallback((
|
|
97
|
-
var
|
|
94
|
+
const createDynamicEmbeddedWalletMutation = React.useCallback((_c) => _tslib.__awaiter(void 0, [_c], void 0, function* ({ authToken, decodedJwt, environmentId, walletConnectorOptions, withAuthenticator, options, chains, }) {
|
|
95
|
+
var _d, _e;
|
|
98
96
|
setIsLoading(true);
|
|
99
|
-
const createEmbeddedWalletMethodToUse = withAuthenticator
|
|
100
|
-
? createEmbeddedWalletWithPasskey.createEmbeddedWalletWithPasskey
|
|
101
|
-
: createPregeneratedWallet.createPregeneratedWallet;
|
|
102
97
|
try {
|
|
103
|
-
const { embeddedWalletVerifiedCredential, decodedJwt: updatedDecodedJwt, signersResponse, walletConnector, } = yield
|
|
98
|
+
const { embeddedWalletVerifiedCredential, decodedJwt: updatedDecodedJwt, signersResponse, walletConnector, } = yield createEmbeddedWalletRequest.createEmbeddedWalletRequest({
|
|
104
99
|
authToken,
|
|
105
|
-
chains: embeddedChains,
|
|
100
|
+
chains: chains !== null && chains !== void 0 ? chains : embeddedChains,
|
|
106
101
|
environmentId,
|
|
107
102
|
user: user !== null && user !== void 0 ? user : createUserProfile.createUserProfile(decodedJwt),
|
|
108
103
|
walletConnector: findPasskeyEmailWalletConnector.findPasskeyEmailWalletConnector(walletConnectorOptions, primaryEmbeddedChain),
|
|
104
|
+
webAuthnAttestation: options === null || options === void 0 ? void 0 : options.webAuthnAttestation,
|
|
105
|
+
withAuthenticator,
|
|
109
106
|
});
|
|
110
|
-
const turnkeyVerifiedCredentials = (
|
|
107
|
+
const turnkeyVerifiedCredentials = (_d = updatedDecodedJwt === null || updatedDecodedJwt === void 0 ? void 0 : updatedDecodedJwt.verifiedCredentials) === null || _d === void 0 ? void 0 : _d.find(({ walletName }) => walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey'));
|
|
111
108
|
/** It's not authenticated if it's a turnkey wallet that still hasn't created a passkey */
|
|
112
|
-
const authenticated = Boolean((
|
|
109
|
+
const authenticated = Boolean((_e = turnkeyVerifiedCredentials === null || turnkeyVerifiedCredentials === void 0 ? void 0 : turnkeyVerifiedCredentials.walletProperties) === null || _e === void 0 ? void 0 : _e.isAuthenticatorAttached);
|
|
113
110
|
const passkeyWallet = {
|
|
114
111
|
address: (yield walletConnector.getAddress()) || '',
|
|
115
112
|
authenticated,
|
|
@@ -132,7 +129,7 @@ const useCreateDynamicEmbeddedWalletMutation = () => {
|
|
|
132
129
|
}
|
|
133
130
|
setUser(updateJWTAndCreateUserProfile.updateJWTAndCreateUserProfile(signersResponse.jwt, signersResponse.minifiedJwt));
|
|
134
131
|
setShowAuthFlow(false, { performMultiWalletChecks: false });
|
|
135
|
-
dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials);
|
|
132
|
+
dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials, signersResponse.jwt);
|
|
136
133
|
}
|
|
137
134
|
catch (err) {
|
|
138
135
|
setError(err);
|
|
@@ -142,7 +139,14 @@ const useCreateDynamicEmbeddedWalletMutation = () => {
|
|
|
142
139
|
finally {
|
|
143
140
|
setIsLoading(false);
|
|
144
141
|
}
|
|
145
|
-
}), [
|
|
142
|
+
}), [
|
|
143
|
+
embeddedChains,
|
|
144
|
+
primaryEmbeddedChain,
|
|
145
|
+
setPrimaryWalletId,
|
|
146
|
+
setShowAuthFlow,
|
|
147
|
+
setUser,
|
|
148
|
+
user,
|
|
149
|
+
]);
|
|
146
150
|
return {
|
|
147
151
|
createDynamicEmbeddedWalletMutation,
|
|
148
152
|
error,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { DynamicJwt } from '@dynamic-labs/sdk-api-core';
|
|
1
|
+
import { DynamicJwt, ChainEnum } from '@dynamic-labs/sdk-api-core';
|
|
2
|
+
import { WebAuthnAttestation } from '@dynamic-labs/wallet-connector-core';
|
|
2
3
|
import { WalletOption } from '../../../shared';
|
|
3
4
|
type MutationProps = {
|
|
4
5
|
authToken: string | undefined;
|
|
@@ -6,9 +7,13 @@ type MutationProps = {
|
|
|
6
7
|
walletConnectorOptions: WalletOption[];
|
|
7
8
|
decodedJwt: DynamicJwt;
|
|
8
9
|
withAuthenticator: boolean;
|
|
10
|
+
options?: {
|
|
11
|
+
webAuthnAttestation: WebAuthnAttestation;
|
|
12
|
+
};
|
|
13
|
+
chains?: ChainEnum[];
|
|
9
14
|
};
|
|
10
15
|
export declare const useCreateDynamicEmbeddedWalletMutation: () => {
|
|
11
|
-
createDynamicEmbeddedWalletMutation: ({ authToken, decodedJwt, environmentId, walletConnectorOptions, withAuthenticator, }: MutationProps) => Promise<void>;
|
|
16
|
+
createDynamicEmbeddedWalletMutation: ({ authToken, decodedJwt, environmentId, walletConnectorOptions, withAuthenticator, options, chains, }: MutationProps) => Promise<void>;
|
|
12
17
|
error: unknown;
|
|
13
18
|
isLoading: boolean;
|
|
14
19
|
};
|
|
@@ -30,10 +30,10 @@ import '../../../context/AccountExistsContext/AccountExistsContext.js';
|
|
|
30
30
|
import '../../../context/UserWalletsContext/UserWalletsContext.js';
|
|
31
31
|
import '../../../context/VerificationContext/VerificationContext.js';
|
|
32
32
|
import 'react-dom';
|
|
33
|
-
import {
|
|
33
|
+
import { createEmbeddedWalletRequest } from '../../../views/Passkey/utils/createEmbeddedWalletRequest/createEmbeddedWalletRequest.js';
|
|
34
34
|
import { findPasskeyEmailWalletConnector } from '../../../views/Passkey/utils/findPasskeyEmailWalletConnector/findPasskeyEmailWalletConnector.js';
|
|
35
|
-
import { createPregeneratedWallet } from '../../../views/Passkey/utils/createPregeneratedWallet/createPregeneratedWallet.js';
|
|
36
35
|
import { findSmartWallet, initializeSmartWallet } from '../useWalletConnectors/utils/smartWallet/smartWallet.js';
|
|
36
|
+
import { findPrimaryEmbeddedChain } from '../../../views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.js';
|
|
37
37
|
import '../../../context/WalletContext/WalletContext.js';
|
|
38
38
|
import '../../../context/ThemeContext/ThemeContext.js';
|
|
39
39
|
import '@dynamic-labs/types';
|
|
@@ -78,34 +78,31 @@ import { useInternalDynamicContext } from '../../../context/DynamicContext/useDy
|
|
|
78
78
|
|
|
79
79
|
// This hook needs to be async that's why it's not using useMutation
|
|
80
80
|
const useCreateDynamicEmbeddedWalletMutation = () => {
|
|
81
|
-
var _a, _b
|
|
82
|
-
const { setPrimaryWalletId,
|
|
81
|
+
var _a, _b;
|
|
82
|
+
const { setPrimaryWalletId, setUser, user, setShowAuthFlow, projectSettings, } = useInternalDynamicContext();
|
|
83
83
|
const [isLoading, setIsLoading] = useState(false);
|
|
84
84
|
const [error, setError] = useState();
|
|
85
85
|
const embeddedChainConfig = ((_b = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.embeddedWallets) === null || _b === void 0 ? void 0 : _b.chainConfigurations) || [];
|
|
86
|
-
const primaryEmbeddedChain = (
|
|
87
|
-
? ChainEnum.Sol
|
|
88
|
-
: ChainEnum.Evm;
|
|
86
|
+
const primaryEmbeddedChain = findPrimaryEmbeddedChain(projectSettings);
|
|
89
87
|
const embeddedChains = embeddedChainConfig
|
|
90
88
|
.filter((chain) => chain.enabled)
|
|
91
89
|
.map((c) => (c.name === 'SOL' ? ChainEnum.Sol : ChainEnum.Evm));
|
|
92
|
-
const createDynamicEmbeddedWalletMutation = useCallback((
|
|
93
|
-
var
|
|
90
|
+
const createDynamicEmbeddedWalletMutation = useCallback((_c) => __awaiter(void 0, [_c], void 0, function* ({ authToken, decodedJwt, environmentId, walletConnectorOptions, withAuthenticator, options, chains, }) {
|
|
91
|
+
var _d, _e;
|
|
94
92
|
setIsLoading(true);
|
|
95
|
-
const createEmbeddedWalletMethodToUse = withAuthenticator
|
|
96
|
-
? createEmbeddedWalletWithPasskey
|
|
97
|
-
: createPregeneratedWallet;
|
|
98
93
|
try {
|
|
99
|
-
const { embeddedWalletVerifiedCredential, decodedJwt: updatedDecodedJwt, signersResponse, walletConnector, } = yield
|
|
94
|
+
const { embeddedWalletVerifiedCredential, decodedJwt: updatedDecodedJwt, signersResponse, walletConnector, } = yield createEmbeddedWalletRequest({
|
|
100
95
|
authToken,
|
|
101
|
-
chains: embeddedChains,
|
|
96
|
+
chains: chains !== null && chains !== void 0 ? chains : embeddedChains,
|
|
102
97
|
environmentId,
|
|
103
98
|
user: user !== null && user !== void 0 ? user : createUserProfile(decodedJwt),
|
|
104
99
|
walletConnector: findPasskeyEmailWalletConnector(walletConnectorOptions, primaryEmbeddedChain),
|
|
100
|
+
webAuthnAttestation: options === null || options === void 0 ? void 0 : options.webAuthnAttestation,
|
|
101
|
+
withAuthenticator,
|
|
105
102
|
});
|
|
106
|
-
const turnkeyVerifiedCredentials = (
|
|
103
|
+
const turnkeyVerifiedCredentials = (_d = updatedDecodedJwt === null || updatedDecodedJwt === void 0 ? void 0 : updatedDecodedJwt.verifiedCredentials) === null || _d === void 0 ? void 0 : _d.find(({ walletName }) => walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey'));
|
|
107
104
|
/** It's not authenticated if it's a turnkey wallet that still hasn't created a passkey */
|
|
108
|
-
const authenticated = Boolean((
|
|
105
|
+
const authenticated = Boolean((_e = turnkeyVerifiedCredentials === null || turnkeyVerifiedCredentials === void 0 ? void 0 : turnkeyVerifiedCredentials.walletProperties) === null || _e === void 0 ? void 0 : _e.isAuthenticatorAttached);
|
|
109
106
|
const passkeyWallet = {
|
|
110
107
|
address: (yield walletConnector.getAddress()) || '',
|
|
111
108
|
authenticated,
|
|
@@ -128,7 +125,7 @@ const useCreateDynamicEmbeddedWalletMutation = () => {
|
|
|
128
125
|
}
|
|
129
126
|
setUser(updateJWTAndCreateUserProfile(signersResponse.jwt, signersResponse.minifiedJwt));
|
|
130
127
|
setShowAuthFlow(false, { performMultiWalletChecks: false });
|
|
131
|
-
dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials);
|
|
128
|
+
dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials, signersResponse.jwt);
|
|
132
129
|
}
|
|
133
130
|
catch (err) {
|
|
134
131
|
setError(err);
|
|
@@ -138,7 +135,14 @@ const useCreateDynamicEmbeddedWalletMutation = () => {
|
|
|
138
135
|
finally {
|
|
139
136
|
setIsLoading(false);
|
|
140
137
|
}
|
|
141
|
-
}), [
|
|
138
|
+
}), [
|
|
139
|
+
embeddedChains,
|
|
140
|
+
primaryEmbeddedChain,
|
|
141
|
+
setPrimaryWalletId,
|
|
142
|
+
setShowAuthFlow,
|
|
143
|
+
setUser,
|
|
144
|
+
user,
|
|
145
|
+
]);
|
|
142
146
|
return {
|
|
143
147
|
createDynamicEmbeddedWalletMutation,
|
|
144
148
|
error,
|
|
@@ -97,6 +97,14 @@ const useDynamicLayoutData = ({ view, authMode, }) => {
|
|
|
97
97
|
copykey: 'dyn_login.title.wallet_only',
|
|
98
98
|
heading: t('dyn_login.title.wallet_only'),
|
|
99
99
|
},
|
|
100
|
+
'merge-user-accounts': {
|
|
101
|
+
copykey: 'dyn_merge_user_accounts.same_wallet.title',
|
|
102
|
+
heading: t('dyn_merge_user_accounts.same_wallet.title'),
|
|
103
|
+
},
|
|
104
|
+
'merge-user-accounts-conflicts': {
|
|
105
|
+
copykey: 'dyn_merge_user_accounts_conflicts.title',
|
|
106
|
+
heading: t('dyn_merge_user_accounts_conflicts.title'),
|
|
107
|
+
},
|
|
100
108
|
'mfa-choose-device': {
|
|
101
109
|
copykey: 'dyn_mfa.choose_device_view.title',
|
|
102
110
|
heading: t('dyn_mfa.choose_device_view.title'),
|
|
@@ -93,6 +93,14 @@ const useDynamicLayoutData = ({ view, authMode, }) => {
|
|
|
93
93
|
copykey: 'dyn_login.title.wallet_only',
|
|
94
94
|
heading: t('dyn_login.title.wallet_only'),
|
|
95
95
|
},
|
|
96
|
+
'merge-user-accounts': {
|
|
97
|
+
copykey: 'dyn_merge_user_accounts.same_wallet.title',
|
|
98
|
+
heading: t('dyn_merge_user_accounts.same_wallet.title'),
|
|
99
|
+
},
|
|
100
|
+
'merge-user-accounts-conflicts': {
|
|
101
|
+
copykey: 'dyn_merge_user_accounts_conflicts.title',
|
|
102
|
+
heading: t('dyn_merge_user_accounts_conflicts.title'),
|
|
103
|
+
},
|
|
96
104
|
'mfa-choose-device': {
|
|
97
105
|
copykey: 'dyn_mfa.choose_device_view.title',
|
|
98
106
|
heading: t('dyn_mfa.choose_device_view.title'),
|
|
@@ -77,16 +77,16 @@ var useInternalDynamicContext = require('../../../context/DynamicContext/useDyna
|
|
|
77
77
|
// This hook can be used to get all of the user's scopes (nft/token gates)
|
|
78
78
|
// and check if the user has a specific scopes with some logic AND/OR (nft/token gate)
|
|
79
79
|
const useDynamicScopes = () => {
|
|
80
|
-
const {
|
|
80
|
+
const { user } = useInternalDynamicContext.useInternalDynamicContext();
|
|
81
81
|
const userScopes = React.useMemo(() => {
|
|
82
|
-
const { scope } =
|
|
82
|
+
const { scope } = user || {};
|
|
83
83
|
if (!scope)
|
|
84
84
|
return [];
|
|
85
85
|
// We need to split the scopes string into an array of scopes
|
|
86
86
|
// because the scopes string is a space separated string of scopes
|
|
87
87
|
// e.g. '"scope": "customerservice marketing tech"'
|
|
88
88
|
return scope.split(' ');
|
|
89
|
-
}, [
|
|
89
|
+
}, [user]);
|
|
90
90
|
// If customer will set scopes to an empty string it will return false
|
|
91
91
|
const userHasScopes = (scopes, logicOperator = 'OR') => {
|
|
92
92
|
if (!scopes.length)
|
|
@@ -73,16 +73,16 @@ import { useInternalDynamicContext } from '../../../context/DynamicContext/useDy
|
|
|
73
73
|
// This hook can be used to get all of the user's scopes (nft/token gates)
|
|
74
74
|
// and check if the user has a specific scopes with some logic AND/OR (nft/token gate)
|
|
75
75
|
const useDynamicScopes = () => {
|
|
76
|
-
const {
|
|
76
|
+
const { user } = useInternalDynamicContext();
|
|
77
77
|
const userScopes = useMemo(() => {
|
|
78
|
-
const { scope } =
|
|
78
|
+
const { scope } = user || {};
|
|
79
79
|
if (!scope)
|
|
80
80
|
return [];
|
|
81
81
|
// We need to split the scopes string into an array of scopes
|
|
82
82
|
// because the scopes string is a space separated string of scopes
|
|
83
83
|
// e.g. '"scope": "customerservice marketing tech"'
|
|
84
84
|
return scope.split(' ');
|
|
85
|
-
}, [
|
|
85
|
+
}, [user]);
|
|
86
86
|
// If customer will set scopes to an empty string it will return false
|
|
87
87
|
const userHasScopes = (scopes, logicOperator = 'OR') => {
|
|
88
88
|
if (!scopes.length)
|
|
@@ -5,26 +5,41 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
|
|
6
6
|
var React = require('react');
|
|
7
7
|
|
|
8
|
-
const useElementById = (
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
const useElementById = () => {
|
|
9
|
+
const targetElement = React.useRef(null);
|
|
10
|
+
const createRootElement = (elementId = 'dynamic-modal', parentElementId) => {
|
|
11
|
+
if (typeof window === 'undefined')
|
|
12
|
+
return targetElement;
|
|
13
|
+
const isElementCreated = window.document.getElementById(elementId);
|
|
14
|
+
if (isElementCreated) {
|
|
15
|
+
targetElement.current = isElementCreated;
|
|
16
|
+
return targetElement;
|
|
17
|
+
}
|
|
18
|
+
const parentElement = parentElementId
|
|
19
|
+
? window.document.getElementById(parentElementId)
|
|
20
|
+
: undefined;
|
|
12
21
|
// creates div and attaches it to the body
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
targetElement.current = window.document.createElement('div');
|
|
23
|
+
targetElement.current.setAttribute('id', elementId);
|
|
24
|
+
targetElement.current.setAttribute('class', elementId);
|
|
25
|
+
targetElement.current.setAttribute('data-testid', elementId);
|
|
26
|
+
/**
|
|
27
|
+
* Setting the pointer-events to auto is necessary to allow the user to interact with the modal
|
|
28
|
+
* when other packages that use a modal set the pointer-events to none on the body element.
|
|
29
|
+
* For example: https://reservoir.tools/ use chakra-ui and sets the pointer-events to none on the body element.
|
|
30
|
+
*/
|
|
31
|
+
targetElement.current.style.pointerEvents = 'auto';
|
|
32
|
+
if (parentElement) {
|
|
33
|
+
parentElement.appendChild(targetElement.current);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
window.document.body.appendChild(targetElement.current);
|
|
25
37
|
}
|
|
26
|
-
|
|
27
|
-
|
|
38
|
+
return targetElement;
|
|
39
|
+
};
|
|
40
|
+
return {
|
|
41
|
+
createRootElement,
|
|
42
|
+
};
|
|
28
43
|
};
|
|
29
44
|
|
|
30
45
|
exports.useElementById = useElementById;
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
export declare const useElementById: (
|
|
2
|
+
export declare const useElementById: () => {
|
|
3
|
+
createRootElement: (elementId?: string, parentElementId?: string) => React.MutableRefObject<HTMLElement>;
|
|
4
|
+
};
|
|
@@ -1,26 +1,41 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { useRef } from 'react';
|
|
3
3
|
|
|
4
|
-
const useElementById = (
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
const useElementById = () => {
|
|
5
|
+
const targetElement = useRef(null);
|
|
6
|
+
const createRootElement = (elementId = 'dynamic-modal', parentElementId) => {
|
|
7
|
+
if (typeof window === 'undefined')
|
|
8
|
+
return targetElement;
|
|
9
|
+
const isElementCreated = window.document.getElementById(elementId);
|
|
10
|
+
if (isElementCreated) {
|
|
11
|
+
targetElement.current = isElementCreated;
|
|
12
|
+
return targetElement;
|
|
13
|
+
}
|
|
14
|
+
const parentElement = parentElementId
|
|
15
|
+
? window.document.getElementById(parentElementId)
|
|
16
|
+
: undefined;
|
|
8
17
|
// creates div and attaches it to the body
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
targetElement.current = window.document.createElement('div');
|
|
19
|
+
targetElement.current.setAttribute('id', elementId);
|
|
20
|
+
targetElement.current.setAttribute('class', elementId);
|
|
21
|
+
targetElement.current.setAttribute('data-testid', elementId);
|
|
22
|
+
/**
|
|
23
|
+
* Setting the pointer-events to auto is necessary to allow the user to interact with the modal
|
|
24
|
+
* when other packages that use a modal set the pointer-events to none on the body element.
|
|
25
|
+
* For example: https://reservoir.tools/ use chakra-ui and sets the pointer-events to none on the body element.
|
|
26
|
+
*/
|
|
27
|
+
targetElement.current.style.pointerEvents = 'auto';
|
|
28
|
+
if (parentElement) {
|
|
29
|
+
parentElement.appendChild(targetElement.current);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
window.document.body.appendChild(targetElement.current);
|
|
21
33
|
}
|
|
22
|
-
|
|
23
|
-
|
|
34
|
+
return targetElement;
|
|
35
|
+
};
|
|
36
|
+
return {
|
|
37
|
+
createRootElement,
|
|
38
|
+
};
|
|
24
39
|
};
|
|
25
40
|
|
|
26
41
|
export { useElementById };
|
|
@@ -35,7 +35,7 @@ require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
|
|
|
35
35
|
require('../../../context/VerificationContext/VerificationContext.cjs');
|
|
36
36
|
require('react-dom');
|
|
37
37
|
var WalletContext = require('../../../context/WalletContext/WalletContext.cjs');
|
|
38
|
-
var
|
|
38
|
+
var useIsTurnkeyWallet = require('../useIsTurnkeyWallet/useIsTurnkeyWallet.cjs');
|
|
39
39
|
var useSecureEnclaveEmbeddedWallet = require('./useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.cjs');
|
|
40
40
|
var useMPCEmbeddedWallet = require('./useMPCEmbeddedWallet/useMPCEmbeddedWallet.cjs');
|
|
41
41
|
require('../../../context/ThemeContext/ThemeContext.cjs');
|
|
@@ -83,34 +83,69 @@ var useInternalDynamicContext = require('../../../context/DynamicContext/useDyna
|
|
|
83
83
|
/**
|
|
84
84
|
* @returns {
|
|
85
85
|
* createEmbeddedWallet, - creates Dynamic embedded wallet according to the settings
|
|
86
|
+
* createOrRestoreSession, - creates or restores session for the embedded wallet
|
|
87
|
+
* createPasskey, - creates passkey for the embedded wallet
|
|
86
88
|
* createPassword, - creates MPC embedded wallet password
|
|
89
|
+
* getPasskeys, - gets passkeys for the embedded wallet
|
|
87
90
|
* isLoadingEmbeddedWallet, - loading state of the embedded wallet
|
|
91
|
+
* isSessionActive, - checks if the session is active for the embedded wallet
|
|
92
|
+
* revealWalletKey, - reveals the private key or recovery phrase for the embedded wallet
|
|
93
|
+
* sendOneTimeCode, - sends one time code for the embedded wallet
|
|
88
94
|
* userHasEmbeddedWallet, - checks if the user has an embedded wallet
|
|
89
95
|
* }
|
|
90
96
|
*/
|
|
91
97
|
const useEmbeddedWallet = () => {
|
|
92
|
-
const { onboardingOnlyJwt } = useInternalDynamicContext.useInternalDynamicContext();
|
|
93
|
-
const {
|
|
94
|
-
const { createEmbeddedWallet: createCoinbaseMPCWallet, canCreateMPCWallet } = useMPCEmbeddedWallet.useMPCEmbeddedWallet();
|
|
95
|
-
const { createEmbeddedWallet: createTurnkeyEmbeddedWallet } = useSecureEnclaveEmbeddedWallet.useSecureEnclaveEmbeddedWallet();
|
|
98
|
+
const { onboardingOnlyJwt, user } = useInternalDynamicContext.useInternalDynamicContext();
|
|
99
|
+
const { isTurnkeyWallet } = useIsTurnkeyWallet.useIsTurnkeyWallet();
|
|
100
|
+
const { createEmbeddedWallet: createCoinbaseMPCWallet, canCreateMPCWallet, createPassword, revealEmbeddedWalletKey: reveaCoinbaseMPCEmbeddedWalletKey, } = useMPCEmbeddedWallet.useMPCEmbeddedWallet();
|
|
101
|
+
const { createEmbeddedWallet: createTurnkeyEmbeddedWallet, createOrRestoreSession, createPasskey, revealEmbeddedWalletKey: revealTurnkeyEmbeddedWalletKey, getPasskeys, isSessionActive, sendOneTimeCode, } = useSecureEnclaveEmbeddedWallet.useSecureEnclaveEmbeddedWallet();
|
|
96
102
|
const { isLoadingEmbeddedWallet } = WalletContext.useWalletContext();
|
|
103
|
+
/**
|
|
104
|
+
* Checks if user has some embedded wallet
|
|
105
|
+
* @returns boolean - true if the user has an embedded wallet
|
|
106
|
+
*/
|
|
97
107
|
const userHasEmbeddedWallet = () => hasEmbeddedWallet.hasEmbeddedWallet(getAuthToken.getAuthToken() || onboardingOnlyJwt);
|
|
98
108
|
/**
|
|
99
|
-
*
|
|
109
|
+
* Creates Dynamic embedded wallet according to the settings
|
|
110
|
+
* @param chains - array of chains to create the wallet for
|
|
111
|
+
* @param options - options for the wallet creation
|
|
112
|
+
* @returns Promise<Wallet | undefined> - created wallet object
|
|
100
113
|
*/
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
const wallet = yield createCoinbaseMPCWallet(chain);
|
|
114
|
+
const createEmbeddedWallet = React.useCallback((chains, options) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
115
|
+
if (yield canCreateMPCWallet(chains)) {
|
|
116
|
+
const wallet = yield createCoinbaseMPCWallet(chains);
|
|
105
117
|
return wallet;
|
|
106
118
|
}
|
|
107
|
-
const wallet = yield createTurnkeyEmbeddedWallet(
|
|
119
|
+
const wallet = yield createTurnkeyEmbeddedWallet(chains, options);
|
|
108
120
|
return wallet;
|
|
109
121
|
}), [canCreateMPCWallet, createCoinbaseMPCWallet, createTurnkeyEmbeddedWallet]);
|
|
122
|
+
/**
|
|
123
|
+
* Reveals the private key or recovery phrase for the embedded wallet
|
|
124
|
+
* @param options - options for revealing the wallet key
|
|
125
|
+
* @returns Promise<boolean> - true if the key was revealed successfully
|
|
126
|
+
*/
|
|
127
|
+
const revealWalletKey = (options) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
128
|
+
if (!user) {
|
|
129
|
+
throw new Error('User is not logged in');
|
|
130
|
+
}
|
|
131
|
+
if (!userHasEmbeddedWallet()) {
|
|
132
|
+
throw new Error('Embedded wallet not found');
|
|
133
|
+
}
|
|
134
|
+
if (isTurnkeyWallet) {
|
|
135
|
+
return revealTurnkeyEmbeddedWalletKey(options);
|
|
136
|
+
}
|
|
137
|
+
return reveaCoinbaseMPCEmbeddedWalletKey();
|
|
138
|
+
});
|
|
110
139
|
return {
|
|
111
140
|
createEmbeddedWallet,
|
|
141
|
+
createOrRestoreSession,
|
|
142
|
+
createPasskey,
|
|
112
143
|
createPassword,
|
|
144
|
+
getPasskeys,
|
|
113
145
|
isLoadingEmbeddedWallet,
|
|
146
|
+
isSessionActive,
|
|
147
|
+
revealWalletKey,
|
|
148
|
+
sendOneTimeCode,
|
|
114
149
|
userHasEmbeddedWallet,
|
|
115
150
|
};
|
|
116
151
|
};
|
|
@@ -3,14 +3,35 @@ import { Wallet } from '../../../shared';
|
|
|
3
3
|
/**
|
|
4
4
|
* @returns {
|
|
5
5
|
* createEmbeddedWallet, - creates Dynamic embedded wallet according to the settings
|
|
6
|
+
* createOrRestoreSession, - creates or restores session for the embedded wallet
|
|
7
|
+
* createPasskey, - creates passkey for the embedded wallet
|
|
6
8
|
* createPassword, - creates MPC embedded wallet password
|
|
9
|
+
* getPasskeys, - gets passkeys for the embedded wallet
|
|
7
10
|
* isLoadingEmbeddedWallet, - loading state of the embedded wallet
|
|
11
|
+
* isSessionActive, - checks if the session is active for the embedded wallet
|
|
12
|
+
* revealWalletKey, - reveals the private key or recovery phrase for the embedded wallet
|
|
13
|
+
* sendOneTimeCode, - sends one time code for the embedded wallet
|
|
8
14
|
* userHasEmbeddedWallet, - checks if the user has an embedded wallet
|
|
9
15
|
* }
|
|
10
16
|
*/
|
|
11
17
|
export declare const useEmbeddedWallet: () => {
|
|
12
|
-
readonly createEmbeddedWallet: (
|
|
13
|
-
|
|
18
|
+
readonly createEmbeddedWallet: (chains?: ChainEnum[], options?: {
|
|
19
|
+
webAuthnAttestation: import("dist/packages/wallet-connector-core/src").WebAuthnAttestation;
|
|
20
|
+
} | undefined) => Promise<Wallet | undefined>;
|
|
21
|
+
readonly createOrRestoreSession: (options: {
|
|
22
|
+
oneTimeCode: string;
|
|
23
|
+
} | undefined) => Promise<string>;
|
|
24
|
+
readonly createPasskey: (options: {
|
|
25
|
+
oneTimeCode: string;
|
|
26
|
+
} | undefined) => Promise<import("dist/packages/wallet-connector-core/src").WebAuthnAttestation>;
|
|
27
|
+
readonly createPassword: (showIntro?: boolean | undefined) => Promise<string>;
|
|
28
|
+
readonly getPasskeys: () => Promise<import("@dynamic-labs/sdk-api-core").UserPasskey[]>;
|
|
14
29
|
readonly isLoadingEmbeddedWallet: boolean;
|
|
30
|
+
readonly isSessionActive: boolean;
|
|
31
|
+
readonly revealWalletKey: (options?: {
|
|
32
|
+
type: "recoveryPhrase" | "privateKey";
|
|
33
|
+
htmlContainerId?: string | undefined;
|
|
34
|
+
} | undefined) => Promise<boolean>;
|
|
35
|
+
readonly sendOneTimeCode: () => Promise<string>;
|
|
15
36
|
readonly userHasEmbeddedWallet: () => boolean;
|
|
16
37
|
};
|
|
@@ -31,7 +31,7 @@ import '../../../context/UserWalletsContext/UserWalletsContext.js';
|
|
|
31
31
|
import '../../../context/VerificationContext/VerificationContext.js';
|
|
32
32
|
import 'react-dom';
|
|
33
33
|
import { useWalletContext } from '../../../context/WalletContext/WalletContext.js';
|
|
34
|
-
import {
|
|
34
|
+
import { useIsTurnkeyWallet } from '../useIsTurnkeyWallet/useIsTurnkeyWallet.js';
|
|
35
35
|
import { useSecureEnclaveEmbeddedWallet } from './useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.js';
|
|
36
36
|
import { useMPCEmbeddedWallet } from './useMPCEmbeddedWallet/useMPCEmbeddedWallet.js';
|
|
37
37
|
import '../../../context/ThemeContext/ThemeContext.js';
|
|
@@ -79,34 +79,69 @@ import { useInternalDynamicContext } from '../../../context/DynamicContext/useDy
|
|
|
79
79
|
/**
|
|
80
80
|
* @returns {
|
|
81
81
|
* createEmbeddedWallet, - creates Dynamic embedded wallet according to the settings
|
|
82
|
+
* createOrRestoreSession, - creates or restores session for the embedded wallet
|
|
83
|
+
* createPasskey, - creates passkey for the embedded wallet
|
|
82
84
|
* createPassword, - creates MPC embedded wallet password
|
|
85
|
+
* getPasskeys, - gets passkeys for the embedded wallet
|
|
83
86
|
* isLoadingEmbeddedWallet, - loading state of the embedded wallet
|
|
87
|
+
* isSessionActive, - checks if the session is active for the embedded wallet
|
|
88
|
+
* revealWalletKey, - reveals the private key or recovery phrase for the embedded wallet
|
|
89
|
+
* sendOneTimeCode, - sends one time code for the embedded wallet
|
|
84
90
|
* userHasEmbeddedWallet, - checks if the user has an embedded wallet
|
|
85
91
|
* }
|
|
86
92
|
*/
|
|
87
93
|
const useEmbeddedWallet = () => {
|
|
88
|
-
const { onboardingOnlyJwt } = useInternalDynamicContext();
|
|
89
|
-
const {
|
|
90
|
-
const { createEmbeddedWallet: createCoinbaseMPCWallet, canCreateMPCWallet } = useMPCEmbeddedWallet();
|
|
91
|
-
const { createEmbeddedWallet: createTurnkeyEmbeddedWallet } = useSecureEnclaveEmbeddedWallet();
|
|
94
|
+
const { onboardingOnlyJwt, user } = useInternalDynamicContext();
|
|
95
|
+
const { isTurnkeyWallet } = useIsTurnkeyWallet();
|
|
96
|
+
const { createEmbeddedWallet: createCoinbaseMPCWallet, canCreateMPCWallet, createPassword, revealEmbeddedWalletKey: reveaCoinbaseMPCEmbeddedWalletKey, } = useMPCEmbeddedWallet();
|
|
97
|
+
const { createEmbeddedWallet: createTurnkeyEmbeddedWallet, createOrRestoreSession, createPasskey, revealEmbeddedWalletKey: revealTurnkeyEmbeddedWalletKey, getPasskeys, isSessionActive, sendOneTimeCode, } = useSecureEnclaveEmbeddedWallet();
|
|
92
98
|
const { isLoadingEmbeddedWallet } = useWalletContext();
|
|
99
|
+
/**
|
|
100
|
+
* Checks if user has some embedded wallet
|
|
101
|
+
* @returns boolean - true if the user has an embedded wallet
|
|
102
|
+
*/
|
|
93
103
|
const userHasEmbeddedWallet = () => hasEmbeddedWallet(getAuthToken() || onboardingOnlyJwt);
|
|
94
104
|
/**
|
|
95
|
-
*
|
|
105
|
+
* Creates Dynamic embedded wallet according to the settings
|
|
106
|
+
* @param chains - array of chains to create the wallet for
|
|
107
|
+
* @param options - options for the wallet creation
|
|
108
|
+
* @returns Promise<Wallet | undefined> - created wallet object
|
|
96
109
|
*/
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
const wallet = yield createCoinbaseMPCWallet(chain);
|
|
110
|
+
const createEmbeddedWallet = useCallback((chains, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
111
|
+
if (yield canCreateMPCWallet(chains)) {
|
|
112
|
+
const wallet = yield createCoinbaseMPCWallet(chains);
|
|
101
113
|
return wallet;
|
|
102
114
|
}
|
|
103
|
-
const wallet = yield createTurnkeyEmbeddedWallet(
|
|
115
|
+
const wallet = yield createTurnkeyEmbeddedWallet(chains, options);
|
|
104
116
|
return wallet;
|
|
105
117
|
}), [canCreateMPCWallet, createCoinbaseMPCWallet, createTurnkeyEmbeddedWallet]);
|
|
118
|
+
/**
|
|
119
|
+
* Reveals the private key or recovery phrase for the embedded wallet
|
|
120
|
+
* @param options - options for revealing the wallet key
|
|
121
|
+
* @returns Promise<boolean> - true if the key was revealed successfully
|
|
122
|
+
*/
|
|
123
|
+
const revealWalletKey = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
124
|
+
if (!user) {
|
|
125
|
+
throw new Error('User is not logged in');
|
|
126
|
+
}
|
|
127
|
+
if (!userHasEmbeddedWallet()) {
|
|
128
|
+
throw new Error('Embedded wallet not found');
|
|
129
|
+
}
|
|
130
|
+
if (isTurnkeyWallet) {
|
|
131
|
+
return revealTurnkeyEmbeddedWalletKey(options);
|
|
132
|
+
}
|
|
133
|
+
return reveaCoinbaseMPCEmbeddedWalletKey();
|
|
134
|
+
});
|
|
106
135
|
return {
|
|
107
136
|
createEmbeddedWallet,
|
|
137
|
+
createOrRestoreSession,
|
|
138
|
+
createPasskey,
|
|
108
139
|
createPassword,
|
|
140
|
+
getPasskeys,
|
|
109
141
|
isLoadingEmbeddedWallet,
|
|
142
|
+
isSessionActive,
|
|
143
|
+
revealWalletKey,
|
|
144
|
+
sendOneTimeCode,
|
|
110
145
|
userHasEmbeddedWallet,
|
|
111
146
|
};
|
|
112
147
|
};
|