@dynamic-labs/sdk-react-core 4.9.1-preview.0 → 4.9.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.
Files changed (63) hide show
  1. package/CHANGELOG.md +11 -2
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +11 -11
  5. package/src/lib/components/NetworkPicker/components/NetworkDropdown/NetworkDropdown.cjs +11 -2
  6. package/src/lib/components/NetworkPicker/components/NetworkDropdown/NetworkDropdown.js +11 -2
  7. package/src/lib/components/UserProfile/parts/UserProfileSocialAccount/UserProfileSocialAccount.cjs +10 -4
  8. package/src/lib/components/UserProfile/parts/UserProfileSocialAccount/UserProfileSocialAccount.js +10 -4
  9. package/src/lib/context/DynamicContext/DynamicContext.cjs +1 -3
  10. package/src/lib/context/DynamicContext/DynamicContext.js +2 -4
  11. package/src/lib/context/DynamicContext/hooks/useShowAuthFlow/useShowAuthFlow.cjs +1 -1
  12. package/src/lib/context/DynamicContext/hooks/useShowAuthFlow/useShowAuthFlow.js +1 -1
  13. package/src/lib/context/DynamicContext/types/IDynamicContext.d.ts +2 -3
  14. package/src/lib/context/DynamicContext/types/SettingsOverrides.d.ts +12 -5
  15. package/src/lib/context/OnrampContext/useEnabledOnrampProviders/useEnabledOnrampProviders.cjs +18 -1
  16. package/src/lib/context/OnrampContext/useEnabledOnrampProviders/useEnabledOnrampProviders.d.ts +2 -2
  17. package/src/lib/context/OnrampContext/useEnabledOnrampProviders/useEnabledOnrampProviders.js +19 -2
  18. package/src/lib/context/SocialRedirectContext/hooks/useRedirectSocialHandler/useRedirectSocialHandler.cjs +6 -6
  19. package/src/lib/context/SocialRedirectContext/hooks/useRedirectSocialHandler/useRedirectSocialHandler.js +6 -6
  20. package/src/lib/utils/functions/findWalletOptionFor/findWalletOptionFor.cjs +1 -1
  21. package/src/lib/utils/functions/findWalletOptionFor/findWalletOptionFor.js +1 -1
  22. package/src/lib/utils/functions/generateMessages/index.cjs +19 -9
  23. package/src/lib/utils/functions/generateMessages/index.js +19 -9
  24. package/src/lib/utils/functions/index.d.ts +0 -1
  25. package/src/lib/utils/functions/onrampConfigurationToOnrampOption/onrampConfigurationToOnrampOption.cjs +31 -18
  26. package/src/lib/utils/functions/onrampConfigurationToOnrampOption/onrampConfigurationToOnrampOption.d.ts +3 -0
  27. package/src/lib/utils/functions/onrampConfigurationToOnrampOption/onrampConfigurationToOnrampOption.js +31 -18
  28. package/src/lib/utils/functions/onrampProviders/coinbase.cjs +55 -0
  29. package/src/lib/utils/functions/onrampProviders/coinbase.d.ts +15 -0
  30. package/src/lib/utils/functions/onrampProviders/coinbase.js +50 -0
  31. package/src/lib/utils/functions/onrampProviders/index.cjs +24 -0
  32. package/src/lib/utils/functions/onrampProviders/index.d.ts +11 -0
  33. package/src/lib/utils/functions/onrampProviders/index.js +19 -0
  34. package/src/lib/utils/functions/openOnrampPopup.cjs +8 -5
  35. package/src/lib/utils/functions/openOnrampPopup.d.ts +4 -2
  36. package/src/lib/utils/functions/openOnrampPopup.js +8 -5
  37. package/src/lib/utils/functions/socialStorage/socialStorage.d.ts +2 -0
  38. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.cjs +2 -2
  39. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.js +2 -2
  40. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +2 -0
  41. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.d.ts +2 -1
  42. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +2 -0
  43. package/src/lib/utils/hooks/useGlobalLoading/useGlobalLoading.cjs +1 -7
  44. package/src/lib/utils/hooks/useGlobalLoading/useGlobalLoading.js +1 -7
  45. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.cjs +5 -1
  46. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.d.ts +5 -1
  47. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.js +5 -1
  48. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +2 -1
  49. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.d.ts +2 -1
  50. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +2 -1
  51. package/src/lib/utils/hooks/useUserAuth/useUserAuth.cjs +8 -2
  52. package/src/lib/utils/hooks/useUserAuth/useUserAuth.js +9 -3
  53. package/src/lib/utils/hooks/useWalletItemActions/useHandleWalletItem/useHandleWalletItem.cjs +2 -4
  54. package/src/lib/utils/hooks/useWalletItemActions/useHandleWalletItem/useHandleWalletItem.js +3 -5
  55. package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedAuthFlow/DynamicEmbeddedAuthFlow.cjs +5 -7
  56. package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedAuthFlow/DynamicEmbeddedAuthFlow.js +5 -7
  57. package/src/lib/widgets/OnrampWidget/OnrampWidget.cjs +11 -2
  58. package/src/lib/widgets/OnrampWidget/OnrampWidget.d.ts +4 -0
  59. package/src/lib/widgets/OnrampWidget/OnrampWidget.js +11 -2
  60. package/src/lib/utils/functions/coinbaseOnramp/formatCoinbaseOnrampUrl.cjs +0 -27
  61. package/src/lib/utils/functions/coinbaseOnramp/formatCoinbaseOnrampUrl.d.ts +0 -2
  62. package/src/lib/utils/functions/coinbaseOnramp/formatCoinbaseOnrampUrl.js +0 -23
  63. package/src/lib/utils/functions/coinbaseOnramp/index.d.ts +0 -1
@@ -14,6 +14,7 @@ export type ConnectSocialAccountProps = {
14
14
  captchaToken?: string;
15
15
  redirectUrl?: string;
16
16
  telegramAuthToken?: string;
17
+ showWidgetAfterConnection?: boolean;
17
18
  };
18
19
  export declare const useSocialAuth: ({ onSettled, onError, onFarcasterUrl, }: UseSocialAuthProps) => {
19
20
  readonly checkValidProvider: (provider: ProviderEnum, authMode: SocialAuthMode) => boolean;
@@ -27,7 +28,7 @@ export declare const useSocialAuth: ({ onSettled, onError, onFarcasterUrl, }: Us
27
28
  telegramAuthToken?: string | undefined;
28
29
  forceCreateUser?: boolean | undefined;
29
30
  }) => Promise<void>;
30
- readonly connectSocialAccount: ({ authMode, provider, validator, captchaToken, redirectUrl, telegramAuthToken, }: ConnectSocialAccountProps) => Promise<void>;
31
+ readonly connectSocialAccount: ({ authMode, provider, validator, captchaToken, redirectUrl, telegramAuthToken, showWidgetAfterConnection, }: ConnectSocialAccountProps) => Promise<void>;
31
32
  readonly error: SocialOAuthError | undefined;
32
33
  readonly handleError: (provider: ProviderEnum | undefined, code: SocialOAuthErrorCode, message: string, options?: {
33
34
  raiseAuthFailure?: boolean | undefined;
@@ -350,7 +350,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
350
350
  shouldRegisterSessionKeysOnSignin,
351
351
  signInAccount,
352
352
  ]);
353
- const connectSocialAccount = useCallback((_c) => __awaiter(void 0, [_c], void 0, function* ({ authMode, provider, validator, captchaToken, redirectUrl, telegramAuthToken, }) {
353
+ const connectSocialAccount = useCallback((_c) => __awaiter(void 0, [_c], void 0, function* ({ authMode, provider, validator, captchaToken, redirectUrl, telegramAuthToken, showWidgetAfterConnection, }) {
354
354
  var _d, _e;
355
355
  clearError();
356
356
  setIsProcessing(true);
@@ -384,6 +384,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
384
384
  captchaToken,
385
385
  codeVerifier: usingPkce ? verifier : undefined,
386
386
  mode: authMode,
387
+ showWidgetAfterConnection,
387
388
  state,
388
389
  });
389
390
  const loginUrlString = getOauthLoginUrl((_d = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _d !== void 0 ? _d : [], provider);
@@ -108,7 +108,7 @@ const useUserAuth = ({ authMethod, }) => {
108
108
  const { setErrorMessage, setError } = ErrorContext.useErrorContext();
109
109
  const { setExistentAccountData } = AccountExistsContext.useAccountExistsContext();
110
110
  const handleAuthenticatedUser = useHandleAuthenticatedUser.useHandleAuthenticatedUser();
111
- const { shouldAutoCreateEmbeddedWallet, shouldPromptForKeyExport } = useEmbeddedWallet.useEmbeddedWallet();
111
+ const { shouldAutoCreateEmbeddedWallet, shouldPromptForKeyExport, embeddedWalletSettingVersion, } = useEmbeddedWallet.useEmbeddedWallet();
112
112
  const isVerifyResponse = (response) => response.user;
113
113
  const initAuth = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ isSignIn = true, verifyFunction, onVerifySuccess, onSettled, onError, showSuccessMessage = false, skipDefaultErrorHandling = false, }) {
114
114
  var _b;
@@ -145,6 +145,7 @@ const useUserAuth = ({ authMethod, }) => {
145
145
  // we should only close auth flow if no wallet is going to be created or there is no key export
146
146
  // otherwise there will be a glitch with auth flow closing and then reopening for passkeys or export
147
147
  const shouldCreateWallet = shouldAutoCreateEmbeddedWallet(verifiedUser);
148
+ // only support export prompt on v2 and higher
148
149
  const shouldPromptExport = shouldPromptForKeyExport();
149
150
  if (showSuccessMessage) {
150
151
  // this timeout is set to make sure that the user will see success message
@@ -153,7 +154,12 @@ const useUserAuth = ({ authMethod, }) => {
153
154
  if (isSignIn) {
154
155
  setCallback('authSuccess');
155
156
  }
156
- if (!shouldCreateWallet && !shouldPromptExport) {
157
+ const walletVersion = embeddedWalletSettingVersion();
158
+ if (walletVersion === sdkApiCore.EmbeddedWalletVersionEnum.V1 &&
159
+ shouldCreateWallet) {
160
+ setShowAuthFlow(true);
161
+ }
162
+ else if (!shouldCreateWallet || !shouldPromptExport) {
157
163
  setShowAuthFlow(false);
158
164
  }
159
165
  onSettled === null || onSettled === void 0 ? void 0 : onSettled();
@@ -1,7 +1,7 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
3
  import { DynamicError, MfaInvalidOtpError, MfaRateLimitedError, EmailAlreadyExistsError, CustomFieldNotUniqueError, UsernameAlreadyExistsError, TooManyEmailVerificationsError, InvalidPhoneNumberError, NoAccessError, AccountExistsError, SandboxMaximumThresholdReachedError, UserHasAccountWithEmailError, sleep } from '@dynamic-labs/utils';
4
- import { MfaBackupCodeAcknowledgement } from '@dynamic-labs/sdk-api-core';
4
+ import { EmbeddedWalletVersionEnum, MfaBackupCodeAcknowledgement } from '@dynamic-labs/sdk-api-core';
5
5
  import { useAccountExistsContext } from '../../../context/AccountExistsContext/AccountExistsContext.js';
6
6
  import 'react';
7
7
  import '../../../context/DynamicContext/DynamicContext.js';
@@ -104,7 +104,7 @@ const useUserAuth = ({ authMethod, }) => {
104
104
  const { setErrorMessage, setError } = useErrorContext();
105
105
  const { setExistentAccountData } = useAccountExistsContext();
106
106
  const handleAuthenticatedUser = useHandleAuthenticatedUser();
107
- const { shouldAutoCreateEmbeddedWallet, shouldPromptForKeyExport } = useEmbeddedWallet();
107
+ const { shouldAutoCreateEmbeddedWallet, shouldPromptForKeyExport, embeddedWalletSettingVersion, } = useEmbeddedWallet();
108
108
  const isVerifyResponse = (response) => response.user;
109
109
  const initAuth = (_a) => __awaiter(void 0, [_a], void 0, function* ({ isSignIn = true, verifyFunction, onVerifySuccess, onSettled, onError, showSuccessMessage = false, skipDefaultErrorHandling = false, }) {
110
110
  var _b;
@@ -141,6 +141,7 @@ const useUserAuth = ({ authMethod, }) => {
141
141
  // we should only close auth flow if no wallet is going to be created or there is no key export
142
142
  // otherwise there will be a glitch with auth flow closing and then reopening for passkeys or export
143
143
  const shouldCreateWallet = shouldAutoCreateEmbeddedWallet(verifiedUser);
144
+ // only support export prompt on v2 and higher
144
145
  const shouldPromptExport = shouldPromptForKeyExport();
145
146
  if (showSuccessMessage) {
146
147
  // this timeout is set to make sure that the user will see success message
@@ -149,7 +150,12 @@ const useUserAuth = ({ authMethod, }) => {
149
150
  if (isSignIn) {
150
151
  setCallback('authSuccess');
151
152
  }
152
- if (!shouldCreateWallet && !shouldPromptExport) {
153
+ const walletVersion = embeddedWalletSettingVersion();
154
+ if (walletVersion === EmbeddedWalletVersionEnum.V1 &&
155
+ shouldCreateWallet) {
156
+ setShowAuthFlow(true);
157
+ }
158
+ else if (!shouldCreateWallet || !shouldPromptExport) {
153
159
  setShowAuthFlow(false);
154
160
  }
155
161
  onSettled === null || onSettled === void 0 ? void 0 : onSettled();
@@ -210,8 +210,7 @@ const useHandleWalletItem = ({ allowAlreadyConnectedWallet, onQrCodeConnect, onC
210
210
  const handleWalletItemClick = (wallet) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
211
211
  const { walletConnector, isInstalledOnBrowser } = wallet;
212
212
  const shouldEndWalletConnectorSession = walletConnector.connectedChain === 'FLOW' ||
213
- walletConnectorCore.isPhantomRedirectConnector(walletConnector) ||
214
- walletConnectorCore.isWalletConnectConnector(walletConnector);
213
+ walletConnectorCore.isPhantomRedirectConnector(walletConnector);
215
214
  logger.logger.logVerboseTroubleshootingMessage('[handleWalletItemClick]', {
216
215
  mockedSDK,
217
216
  shouldEndWalletConnectorSession,
@@ -242,8 +241,7 @@ const useHandleWalletItem = ({ allowAlreadyConnectedWallet, onQrCodeConnect, onC
242
241
  }
243
242
  if (!allowAlreadyConnectedWallet &&
244
243
  isSelectedWalletAlreadyConnected.isSelectedWalletAlreadyConnected(linkedWallets, walletConnector, user) &&
245
- walletConnector.connectedChain !== 'FLOW' &&
246
- !walletConnector.isWalletConnect) {
244
+ walletConnector.connectedChain !== 'FLOW') {
247
245
  // wallet is already connected
248
246
  handleAlreadyConnectedWallet(walletConnector);
249
247
  }
@@ -1,7 +1,7 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../../../../_virtual/_tslib.js';
3
3
  import { StorageService, isMobile, UserRejectedRequestError } from '@dynamic-labs/utils';
4
- import { isPhantomRedirectConnector, isWalletConnectConnector } from '@dynamic-labs/wallet-connector-core';
4
+ import { isPhantomRedirectConnector } from '@dynamic-labs/wallet-connector-core';
5
5
  import 'react';
6
6
  import '../../../../context/DynamicContext/DynamicContext.js';
7
7
  import '@dynamic-labs/sdk-api-core';
@@ -206,8 +206,7 @@ const useHandleWalletItem = ({ allowAlreadyConnectedWallet, onQrCodeConnect, onC
206
206
  const handleWalletItemClick = (wallet) => __awaiter(void 0, void 0, void 0, function* () {
207
207
  const { walletConnector, isInstalledOnBrowser } = wallet;
208
208
  const shouldEndWalletConnectorSession = walletConnector.connectedChain === 'FLOW' ||
209
- isPhantomRedirectConnector(walletConnector) ||
210
- isWalletConnectConnector(walletConnector);
209
+ isPhantomRedirectConnector(walletConnector);
211
210
  logger.logVerboseTroubleshootingMessage('[handleWalletItemClick]', {
212
211
  mockedSDK,
213
212
  shouldEndWalletConnectorSession,
@@ -238,8 +237,7 @@ const useHandleWalletItem = ({ allowAlreadyConnectedWallet, onQrCodeConnect, onC
238
237
  }
239
238
  if (!allowAlreadyConnectedWallet &&
240
239
  isSelectedWalletAlreadyConnected(linkedWallets, walletConnector, user) &&
241
- walletConnector.connectedChain !== 'FLOW' &&
242
- !walletConnector.isWalletConnect) {
240
+ walletConnector.connectedChain !== 'FLOW') {
243
241
  // wallet is already connected
244
242
  handleAlreadyConnectedWallet(walletConnector);
245
243
  }
@@ -102,14 +102,12 @@ var SandboxIndicatorWrapper = require('../../../components/SandboxIndicatorWrapp
102
102
 
103
103
  const DynamicEmbeddedAuthFlow = ({ background = 'none', className, style, }) => {
104
104
  const hide = useIsLoggedIn.useIsLoggedIn();
105
- const { projectSettings, setIsRenderingEmbeddedAuthFlow } = useInternalDynamicContext.useInternalDynamicContext();
105
+ const { projectSettings, isRenderingEmbeddedAuthFlow } = useInternalDynamicContext.useInternalDynamicContext();
106
+ isRenderingEmbeddedAuthFlow.current = !hide;
106
107
  // Keep isRenderingEmbeddedAuthFlow up to date
107
- React.useEffect(() => {
108
- setIsRenderingEmbeddedAuthFlow(!hide);
109
- return () => {
110
- setIsRenderingEmbeddedAuthFlow(false);
111
- };
112
- }, [setIsRenderingEmbeddedAuthFlow, hide]);
108
+ React.useEffect(() => () => {
109
+ isRenderingEmbeddedAuthFlow.current = false;
110
+ }, [isRenderingEmbeddedAuthFlow]);
113
111
  if (hide)
114
112
  return null;
115
113
  const content = (jsxRuntime.jsx(DynamicAuthLayout.DynamicAuthLayout, { className: className, style: style, projectSettings: projectSettings, children: jsxRuntime.jsx(RenderView.RenderView, {}) }));
@@ -98,14 +98,12 @@ import { SandboxIndicatorWrapper } from '../../../components/SandboxIndicatorWra
98
98
 
99
99
  const DynamicEmbeddedAuthFlow = ({ background = 'none', className, style, }) => {
100
100
  const hide = useIsLoggedIn();
101
- const { projectSettings, setIsRenderingEmbeddedAuthFlow } = useInternalDynamicContext();
101
+ const { projectSettings, isRenderingEmbeddedAuthFlow } = useInternalDynamicContext();
102
+ isRenderingEmbeddedAuthFlow.current = !hide;
102
103
  // Keep isRenderingEmbeddedAuthFlow up to date
103
- useEffect(() => {
104
- setIsRenderingEmbeddedAuthFlow(!hide);
105
- return () => {
106
- setIsRenderingEmbeddedAuthFlow(false);
107
- };
108
- }, [setIsRenderingEmbeddedAuthFlow, hide]);
104
+ useEffect(() => () => {
105
+ isRenderingEmbeddedAuthFlow.current = false;
106
+ }, [isRenderingEmbeddedAuthFlow]);
109
107
  if (hide)
110
108
  return null;
111
109
  const content = (jsx(DynamicAuthLayout, { className: className, style: style, projectSettings: projectSettings, children: jsx(RenderView, {}) }));
@@ -95,14 +95,23 @@ require('../../components/IsBrowser/IsBrowser.cjs');
95
95
  require('../../components/Popper/Popper/Popper.cjs');
96
96
  require('../../components/Popper/PopperContext/PopperContext.cjs');
97
97
 
98
+ /**
99
+ * Widget for displaying iframe-based onramp providers
100
+ * Note: Popup-based providers (like Coinbase) are handled separately in their onClick handlers
101
+ */
98
102
  const OnrampWidget = () => {
99
103
  const { showOnramp, selectedOnramp, onrampEnabled, setShowOnramp } = OnrampContext.useOnrampContext();
100
104
  const [onrampRef, setOnrampRef] = React.useState(null);
101
105
  index.useOnClickOutside(onrampRef, () => setShowOnramp(false));
102
- if (!onrampEnabled || !(selectedOnramp === null || selectedOnramp === void 0 ? void 0 : selectedOnramp.iframeUrl)) {
106
+ const shouldRenderWidget = onrampEnabled &&
107
+ selectedOnramp &&
108
+ selectedOnramp.openMode === 'iframe' &&
109
+ selectedOnramp.url;
110
+ // If onramp is not enabled or there's no selected onramp, don't render anything
111
+ if (!shouldRenderWidget) {
103
112
  return null;
104
113
  }
105
- return (jsxRuntime.jsx(ShadowDOM.ShadowDOM, { children: jsxRuntime.jsxs(OpacityTransition.OpacityTransition, { isShown: showOnramp, children: [jsxRuntime.jsx("div", { className: 'onramp-widget__backdrop', "aria-hidden": 'true', "data-testid": 'onramp-widget-backdrop' }), jsxRuntime.jsx("div", { className: 'onramp-widget__modal', children: jsxRuntime.jsx("iframe", { id: 'onramp-iframe', src: selectedOnramp.iframeUrl, allow: 'camera *;geolocation *', title: 'Crypto Onramp', ref: setOnrampRef, "data-testid": 'onramp-widget-modal' }) })] }) }));
114
+ return (jsxRuntime.jsx(ShadowDOM.ShadowDOM, { children: jsxRuntime.jsxs(OpacityTransition.OpacityTransition, { isShown: showOnramp, children: [jsxRuntime.jsx("div", { className: 'onramp-widget__backdrop', "aria-hidden": 'true', "data-testid": 'onramp-widget-backdrop' }), jsxRuntime.jsx("div", { className: 'onramp-widget__modal', children: jsxRuntime.jsx("iframe", { id: 'onramp-iframe', src: selectedOnramp.url, allow: 'camera *;geolocation *', title: 'Crypto Onramp', ref: setOnrampRef, "data-testid": 'onramp-widget-modal' }) })] }) }));
106
115
  };
107
116
 
108
117
  exports.OnrampWidget = OnrampWidget;
@@ -1,2 +1,6 @@
1
1
  import { type FC } from 'react';
2
+ /**
3
+ * Widget for displaying iframe-based onramp providers
4
+ * Note: Popup-based providers (like Coinbase) are handled separately in their onClick handlers
5
+ */
2
6
  export declare const OnrampWidget: FC;
@@ -91,14 +91,23 @@ import '../../components/IsBrowser/IsBrowser.js';
91
91
  import '../../components/Popper/Popper/Popper.js';
92
92
  import '../../components/Popper/PopperContext/PopperContext.js';
93
93
 
94
+ /**
95
+ * Widget for displaying iframe-based onramp providers
96
+ * Note: Popup-based providers (like Coinbase) are handled separately in their onClick handlers
97
+ */
94
98
  const OnrampWidget = () => {
95
99
  const { showOnramp, selectedOnramp, onrampEnabled, setShowOnramp } = useOnrampContext();
96
100
  const [onrampRef, setOnrampRef] = useState(null);
97
101
  useOnClickOutside(onrampRef, () => setShowOnramp(false));
98
- if (!onrampEnabled || !(selectedOnramp === null || selectedOnramp === void 0 ? void 0 : selectedOnramp.iframeUrl)) {
102
+ const shouldRenderWidget = onrampEnabled &&
103
+ selectedOnramp &&
104
+ selectedOnramp.openMode === 'iframe' &&
105
+ selectedOnramp.url;
106
+ // If onramp is not enabled or there's no selected onramp, don't render anything
107
+ if (!shouldRenderWidget) {
99
108
  return null;
100
109
  }
101
- return (jsx(ShadowDOM, { children: jsxs(OpacityTransition, { isShown: showOnramp, children: [jsx("div", { className: 'onramp-widget__backdrop', "aria-hidden": 'true', "data-testid": 'onramp-widget-backdrop' }), jsx("div", { className: 'onramp-widget__modal', children: jsx("iframe", { id: 'onramp-iframe', src: selectedOnramp.iframeUrl, allow: 'camera *;geolocation *', title: 'Crypto Onramp', ref: setOnrampRef, "data-testid": 'onramp-widget-modal' }) })] }) }));
110
+ return (jsx(ShadowDOM, { children: jsxs(OpacityTransition, { isShown: showOnramp, children: [jsx("div", { className: 'onramp-widget__backdrop', "aria-hidden": 'true', "data-testid": 'onramp-widget-backdrop' }), jsx("div", { className: 'onramp-widget__modal', children: jsx("iframe", { id: 'onramp-iframe', src: selectedOnramp.url, allow: 'camera *;geolocation *', title: 'Crypto Onramp', ref: setOnrampRef, "data-testid": 'onramp-widget-modal' }) })] }) }));
102
111
  };
103
112
 
104
113
  export { OnrampWidget };
@@ -1,27 +0,0 @@
1
- 'use client'
2
- 'use strict';
3
-
4
- Object.defineProperty(exports, '__esModule', { value: true });
5
-
6
- const formatCoinbaseOnrampUrl = (url, wallet) => {
7
- if (wallet) {
8
- const networks = wallet.connector.getEnabledNetworks();
9
- if (!networks || networks.length === 0) {
10
- return url;
11
- }
12
- const filteredNetworks = networks.filter((network) => !network.isTestnet);
13
- const onlyKeys = filteredNetworks
14
- .filter((network) => Boolean(network.key)) // filter out networks without keys
15
- .map((network) => network.key);
16
- const addressesObj = {
17
- [wallet.address]: onlyKeys,
18
- };
19
- const baseUrl = new URL(url);
20
- // Construct the URL with the raw query parameters
21
- const finalUrl = `${baseUrl.origin}${baseUrl.pathname}?appId=${baseUrl.searchParams.get('appId')}&addresses=${encodeURIComponent(JSON.stringify(addressesObj))}`;
22
- return finalUrl;
23
- }
24
- return url;
25
- };
26
-
27
- exports.formatCoinbaseOnrampUrl = formatCoinbaseOnrampUrl;
@@ -1,2 +0,0 @@
1
- import type { Wallet } from '@dynamic-labs/wallet-connector-core';
2
- export declare const formatCoinbaseOnrampUrl: (url: string, wallet: Wallet) => string;
@@ -1,23 +0,0 @@
1
- 'use client'
2
- const formatCoinbaseOnrampUrl = (url, wallet) => {
3
- if (wallet) {
4
- const networks = wallet.connector.getEnabledNetworks();
5
- if (!networks || networks.length === 0) {
6
- return url;
7
- }
8
- const filteredNetworks = networks.filter((network) => !network.isTestnet);
9
- const onlyKeys = filteredNetworks
10
- .filter((network) => Boolean(network.key)) // filter out networks without keys
11
- .map((network) => network.key);
12
- const addressesObj = {
13
- [wallet.address]: onlyKeys,
14
- };
15
- const baseUrl = new URL(url);
16
- // Construct the URL with the raw query parameters
17
- const finalUrl = `${baseUrl.origin}${baseUrl.pathname}?appId=${baseUrl.searchParams.get('appId')}&addresses=${encodeURIComponent(JSON.stringify(addressesObj))}`;
18
- return finalUrl;
19
- }
20
- return url;
21
- };
22
-
23
- export { formatCoinbaseOnrampUrl };
@@ -1 +0,0 @@
1
- export { formatCoinbaseOnrampUrl } from './formatCoinbaseOnrampUrl';