@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.
- package/CHANGELOG.md +11 -2
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +11 -11
- package/src/lib/components/NetworkPicker/components/NetworkDropdown/NetworkDropdown.cjs +11 -2
- package/src/lib/components/NetworkPicker/components/NetworkDropdown/NetworkDropdown.js +11 -2
- package/src/lib/components/UserProfile/parts/UserProfileSocialAccount/UserProfileSocialAccount.cjs +10 -4
- package/src/lib/components/UserProfile/parts/UserProfileSocialAccount/UserProfileSocialAccount.js +10 -4
- package/src/lib/context/DynamicContext/DynamicContext.cjs +1 -3
- package/src/lib/context/DynamicContext/DynamicContext.js +2 -4
- package/src/lib/context/DynamicContext/hooks/useShowAuthFlow/useShowAuthFlow.cjs +1 -1
- package/src/lib/context/DynamicContext/hooks/useShowAuthFlow/useShowAuthFlow.js +1 -1
- package/src/lib/context/DynamicContext/types/IDynamicContext.d.ts +2 -3
- package/src/lib/context/DynamicContext/types/SettingsOverrides.d.ts +12 -5
- package/src/lib/context/OnrampContext/useEnabledOnrampProviders/useEnabledOnrampProviders.cjs +18 -1
- package/src/lib/context/OnrampContext/useEnabledOnrampProviders/useEnabledOnrampProviders.d.ts +2 -2
- package/src/lib/context/OnrampContext/useEnabledOnrampProviders/useEnabledOnrampProviders.js +19 -2
- package/src/lib/context/SocialRedirectContext/hooks/useRedirectSocialHandler/useRedirectSocialHandler.cjs +6 -6
- package/src/lib/context/SocialRedirectContext/hooks/useRedirectSocialHandler/useRedirectSocialHandler.js +6 -6
- package/src/lib/utils/functions/findWalletOptionFor/findWalletOptionFor.cjs +1 -1
- package/src/lib/utils/functions/findWalletOptionFor/findWalletOptionFor.js +1 -1
- package/src/lib/utils/functions/generateMessages/index.cjs +19 -9
- package/src/lib/utils/functions/generateMessages/index.js +19 -9
- package/src/lib/utils/functions/index.d.ts +0 -1
- package/src/lib/utils/functions/onrampConfigurationToOnrampOption/onrampConfigurationToOnrampOption.cjs +31 -18
- package/src/lib/utils/functions/onrampConfigurationToOnrampOption/onrampConfigurationToOnrampOption.d.ts +3 -0
- package/src/lib/utils/functions/onrampConfigurationToOnrampOption/onrampConfigurationToOnrampOption.js +31 -18
- package/src/lib/utils/functions/onrampProviders/coinbase.cjs +55 -0
- package/src/lib/utils/functions/onrampProviders/coinbase.d.ts +15 -0
- package/src/lib/utils/functions/onrampProviders/coinbase.js +50 -0
- package/src/lib/utils/functions/onrampProviders/index.cjs +24 -0
- package/src/lib/utils/functions/onrampProviders/index.d.ts +11 -0
- package/src/lib/utils/functions/onrampProviders/index.js +19 -0
- package/src/lib/utils/functions/openOnrampPopup.cjs +8 -5
- package/src/lib/utils/functions/openOnrampPopup.d.ts +4 -2
- package/src/lib/utils/functions/openOnrampPopup.js +8 -5
- package/src/lib/utils/functions/socialStorage/socialStorage.d.ts +2 -0
- package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.cjs +2 -2
- package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.js +2 -2
- package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +2 -0
- package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.d.ts +2 -1
- package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +2 -0
- package/src/lib/utils/hooks/useGlobalLoading/useGlobalLoading.cjs +1 -7
- package/src/lib/utils/hooks/useGlobalLoading/useGlobalLoading.js +1 -7
- package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.cjs +5 -1
- package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.d.ts +5 -1
- package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.js +5 -1
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +2 -1
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.d.ts +2 -1
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +2 -1
- package/src/lib/utils/hooks/useUserAuth/useUserAuth.cjs +8 -2
- package/src/lib/utils/hooks/useUserAuth/useUserAuth.js +9 -3
- package/src/lib/utils/hooks/useWalletItemActions/useHandleWalletItem/useHandleWalletItem.cjs +2 -4
- package/src/lib/utils/hooks/useWalletItemActions/useHandleWalletItem/useHandleWalletItem.js +3 -5
- package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedAuthFlow/DynamicEmbeddedAuthFlow.cjs +5 -7
- package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedAuthFlow/DynamicEmbeddedAuthFlow.js +5 -7
- package/src/lib/widgets/OnrampWidget/OnrampWidget.cjs +11 -2
- package/src/lib/widgets/OnrampWidget/OnrampWidget.d.ts +4 -0
- package/src/lib/widgets/OnrampWidget/OnrampWidget.js +11 -2
- package/src/lib/utils/functions/coinbaseOnramp/formatCoinbaseOnrampUrl.cjs +0 -27
- package/src/lib/utils/functions/coinbaseOnramp/formatCoinbaseOnrampUrl.d.ts +0 -2
- package/src/lib/utils/functions/coinbaseOnramp/formatCoinbaseOnrampUrl.js +0 -23
- 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
|
-
|
|
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
|
-
|
|
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();
|
package/src/lib/utils/hooks/useWalletItemActions/useHandleWalletItem/useHandleWalletItem.cjs
CHANGED
|
@@ -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
|
|
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
|
}
|
package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedAuthFlow/DynamicEmbeddedAuthFlow.cjs
CHANGED
|
@@ -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,
|
|
105
|
+
const { projectSettings, isRenderingEmbeddedAuthFlow } = useInternalDynamicContext.useInternalDynamicContext();
|
|
106
|
+
isRenderingEmbeddedAuthFlow.current = !hide;
|
|
106
107
|
// Keep isRenderingEmbeddedAuthFlow up to date
|
|
107
|
-
React.useEffect(() => {
|
|
108
|
-
|
|
109
|
-
|
|
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, {}) }));
|
package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedAuthFlow/DynamicEmbeddedAuthFlow.js
CHANGED
|
@@ -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,
|
|
101
|
+
const { projectSettings, isRenderingEmbeddedAuthFlow } = useInternalDynamicContext();
|
|
102
|
+
isRenderingEmbeddedAuthFlow.current = !hide;
|
|
102
103
|
// Keep isRenderingEmbeddedAuthFlow up to date
|
|
103
|
-
useEffect(() => {
|
|
104
|
-
|
|
105
|
-
|
|
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
|
-
|
|
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.
|
|
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;
|
|
@@ -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
|
-
|
|
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.
|
|
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,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';
|