@dynamic-labs/sdk-react-core 4.0.0-alpha.33 → 4.0.0-alpha.34

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 (47) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +11 -11
  5. package/src/index.cjs +2 -1
  6. package/src/index.d.ts +1 -0
  7. package/src/index.js +1 -1
  8. package/src/lib/components/OverlayCardBase/OverlayCardBase.cjs +4 -2
  9. package/src/lib/components/OverlayCardBase/OverlayCardBase.js +5 -3
  10. package/src/lib/components/RenderView/RenderView.cjs +1 -1
  11. package/src/lib/components/RenderView/RenderView.js +1 -1
  12. package/src/lib/components/Transition/SlideInUpTransition/SlideInUpTransition.cjs +2 -2
  13. package/src/lib/components/Transition/SlideInUpTransition/SlideInUpTransition.js +2 -2
  14. package/src/lib/context/DynamicContext/DynamicContext.cjs +8 -2
  15. package/src/lib/context/DynamicContext/DynamicContext.js +8 -2
  16. package/src/lib/events/dynamicEvents.cjs +22 -0
  17. package/src/lib/events/dynamicEvents.d.ts +3 -0
  18. package/src/lib/events/dynamicEvents.js +21 -1
  19. package/src/lib/events/wallets.d.ts +4 -0
  20. package/src/lib/layout/DynamicAuthLayout/HelpContent/WalletListHelpContent/WalletListHelpContent.cjs +4 -3
  21. package/src/lib/layout/DynamicAuthLayout/HelpContent/WalletListHelpContent/WalletListHelpContent.js +5 -4
  22. package/src/lib/modals/AddNetworkModal/AddNetworkModal.cjs +3 -3
  23. package/src/lib/modals/AddNetworkModal/AddNetworkModal.d.ts +2 -1
  24. package/src/lib/modals/AddNetworkModal/AddNetworkModal.js +3 -3
  25. package/src/lib/styles/index.shadow.cjs +1 -1
  26. package/src/lib/styles/index.shadow.js +1 -1
  27. package/src/lib/utils/functions/getPlatformForConnector/getPlatformForConnector.cjs +1 -1
  28. package/src/lib/utils/functions/getPlatformForConnector/getPlatformForConnector.js +1 -1
  29. package/src/lib/utils/functions/parseWalletLinks/parseWalletLinks.d.ts +1 -1
  30. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.cjs +1 -16
  31. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.d.ts +1 -1
  32. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.js +1 -16
  33. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +10 -0
  34. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +11 -1
  35. package/src/lib/utils/hooks/useWalletUiUtils/useWalletUiUtils.cjs +2 -2
  36. package/src/lib/utils/hooks/useWalletUiUtils/useWalletUiUtils.js +2 -2
  37. package/src/lib/views/AddNetworkView/AddNetworkView.cjs +5 -5
  38. package/src/lib/views/AddNetworkView/AddNetworkView.d.ts +2 -1
  39. package/src/lib/views/AddNetworkView/AddNetworkView.js +5 -5
  40. package/src/lib/views/MobileWalletRedirectView/MobileWalletRedirectView.cjs +3 -5
  41. package/src/lib/views/MobileWalletRedirectView/MobileWalletRedirectView.js +4 -6
  42. package/src/lib/views/NoQrNotInstalledView/NoQrNotInstalledView.cjs +5 -6
  43. package/src/lib/views/NoQrNotInstalledView/NoQrNotInstalledView.js +6 -7
  44. package/src/lib/widgets/DynamicWidget/hooks/useWalletDownloadLinks/useWalletDownloadLinks.cjs +3 -4
  45. package/src/lib/widgets/DynamicWidget/hooks/useWalletDownloadLinks/useWalletDownloadLinks.js +3 -4
  46. package/src/lib/widgets/DynamicWidget/prompts/NoQrNotInstalledModalView/NoQrNotInstalledModalView.cjs +2 -3
  47. package/src/lib/widgets/DynamicWidget/prompts/NoQrNotInstalledModalView/NoQrNotInstalledModalView.js +4 -5
@@ -5,6 +5,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var utils = require('@dynamic-labs/utils');
7
7
 
8
- const getPlatformForConnector = (connector) => utils.isMobile() || connector.isWalletConnect ? 'mobile' : 'browserExtension';
8
+ const getPlatformForConnector = (connector) => utils.isMobile() || connector.isWalletConnect ? 'mobile' : 'desktop';
9
9
 
10
10
  exports.getPlatformForConnector = getPlatformForConnector;
@@ -1,6 +1,6 @@
1
1
  'use client'
2
2
  import { isMobile } from '@dynamic-labs/utils';
3
3
 
4
- const getPlatformForConnector = (connector) => isMobile() || connector.isWalletConnect ? 'mobile' : 'browserExtension';
4
+ const getPlatformForConnector = (connector) => isMobile() || connector.isWalletConnect ? 'mobile' : 'desktop';
5
5
 
6
6
  export { getPlatformForConnector };
@@ -1,4 +1,4 @@
1
- import type { WalletLinks } from '@dynamic-labs/wallet-book';
1
+ import type { WalletLinks } from '@dynamic-labs/wallet-connector-core';
2
2
  import { BrowserName } from '../../../shared';
3
3
  interface WalletLinksHelperProps {
4
4
  canShowAndroidAppButton: boolean;
@@ -18,24 +18,9 @@ const useInternalDynamicEvents = (event, listener) => {
18
18
  };
19
19
  }, [event]);
20
20
  };
21
- // ATTENTION
22
- // Everything below should be made public soon, but we need to plan this out first
23
- // Main issues:
24
- // 1. How should we map customer callback names to our dynamic event names?
25
- // -> Gui's suggestion: breaking change to rename customer callbacks so they fit these events names
26
- // 2. We would have to remove these callbacks from the useCustomerCallbacks hook
27
- /** Which events are accessible by our clients */
28
- const externalEvents = [
29
- 'emailVerificationResult',
30
- 'embeddedWalletCreated',
31
- 'logout',
32
- 'walletAdded',
33
- 'mfaCompletionSuccess',
34
- 'mfaCompletionFailure',
35
- ];
36
21
  /** Allows subscribing to dynamic events directly inside components with a hook */
37
22
  const useDynamicEvents = (event, listener) => {
38
- if (!externalEvents.includes(event))
23
+ if (!dynamicEvents.externalEvents.includes(event))
39
24
  throw new Error(`Unrecognized event "${event}" used with useDynamicEvents`);
40
25
  useInternalDynamicEvents(event, listener);
41
26
  };
@@ -4,5 +4,5 @@ type DynamicEventListener<E extends keyof DynamicEvents> = (...args: EventArgs<D
4
4
  /** Allows us to subscribe to all dynamicEvents with a hook, even the internal ones */
5
5
  export declare const useInternalDynamicEvents: <E extends keyof import("../../../../events/auth").AuthEvents | keyof import("../../../../events/ui").UIEvents | keyof import("../../../../events/otp").OTPEvents | keyof import("../../../../events/wallets").WalletEvents | keyof import("../../../../events/passkey").PasskeyEvents | "farcasterConnectCancelled" | keyof import("../../../../events/embeddedWallet").EmbeddedWalletEvents | keyof import("../../../../events/multiWallet").MultiWalletInternalEvents | "tokenBalancesChanged">(event: E, listener: DynamicEventListener<E>) => void;
6
6
  /** Allows subscribing to dynamic events directly inside components with a hook */
7
- export declare const useDynamicEvents: <E extends "logout" | "mfaCompletionSuccess" | "mfaCompletionFailure" | "emailVerificationResult" | "walletAdded" | "embeddedWalletCreated">(event: E, listener: DynamicEventListener<E>) => void;
7
+ export declare const useDynamicEvents: <E extends "logout" | "mfaCompletionSuccess" | "mfaCompletionFailure" | "emailVerificationResult" | "walletAdded" | "primaryWalletChanged" | "primaryWalletNetworkChanged" | "embeddedWalletCreated">(event: E, listener: DynamicEventListener<E>) => void;
8
8
  export {};
@@ -1,6 +1,6 @@
1
1
  'use client'
2
2
  import { useRef, useEffect } from 'react';
3
- import { dynamicEvents } from '../../../../events/dynamicEvents.js';
3
+ import { externalEvents, dynamicEvents } from '../../../../events/dynamicEvents.js';
4
4
 
5
5
  /** Allows us to subscribe to all dynamicEvents with a hook, even the internal ones */
6
6
  const useInternalDynamicEvents = (event, listener) => {
@@ -14,21 +14,6 @@ const useInternalDynamicEvents = (event, listener) => {
14
14
  };
15
15
  }, [event]);
16
16
  };
17
- // ATTENTION
18
- // Everything below should be made public soon, but we need to plan this out first
19
- // Main issues:
20
- // 1. How should we map customer callback names to our dynamic event names?
21
- // -> Gui's suggestion: breaking change to rename customer callbacks so they fit these events names
22
- // 2. We would have to remove these callbacks from the useCustomerCallbacks hook
23
- /** Which events are accessible by our clients */
24
- const externalEvents = [
25
- 'emailVerificationResult',
26
- 'embeddedWalletCreated',
27
- 'logout',
28
- 'walletAdded',
29
- 'mfaCompletionSuccess',
30
- 'mfaCompletionFailure',
31
- ];
32
17
  /** Allows subscribing to dynamic events directly inside components with a hook */
33
18
  const useDynamicEvents = (event, listener) => {
34
19
  if (!externalEvents.includes(event))
@@ -18,11 +18,14 @@ require('../../constants/colors.cjs');
18
18
  require('../../constants/values.cjs');
19
19
  require('../../../store/state/loadingAndLifecycle.cjs');
20
20
  require('../../../shared/consts/index.cjs');
21
+ var dynamicEvents = require('../../../events/dynamicEvents.cjs');
21
22
  var createLinkedWalletsFromWalletOptions = require('./utils/createLinkedWalletsFromWalletOptions/createLinkedWalletsFromWalletOptions.cjs');
22
23
  var updateUserWalletsFromLinkedWallets = require('./utils/updateUserWalletsFromLinkedWallets/updateUserWalletsFromLinkedWallets.cjs');
23
24
 
24
25
  const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOptions, setMultiWalletWidgetState, primaryWalletId, setPrimaryWalletId, user, canHaveMultipleWalletsConnected, separateSmartWalletAndSigner = false, }) => {
25
26
  const [showQrcodeModal, setShowQrcodeModal] = React.useState(false);
27
+ // keeps track of the last primary wallet id to avoid emitting the same event multiple times
28
+ const lastPrimaryWalletId = React.useRef(primaryWalletId);
26
29
  const linkedWallets = React.useMemo(() => {
27
30
  if (!user) {
28
31
  return [];
@@ -77,6 +80,13 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
77
80
  setUserWallets((userWallets) => updateUserWalletsFromLinkedWallets.updateUserWalletsFromLinkedWallets(userWallets, wallets));
78
81
  }, [setUserWallets, wallets]);
79
82
  const primaryWallet = React.useMemo(() => { var _a; return (_a = wallets.find((wallet) => wallet.id === primaryWalletId)) !== null && _a !== void 0 ? _a : null; }, [primaryWalletId, wallets]);
83
+ // emit primaryWalletChanged event if the primary wallet changes
84
+ React.useEffect(() => {
85
+ if (primaryWallet && primaryWallet.id !== lastPrimaryWalletId.current) {
86
+ lastPrimaryWalletId.current = primaryWallet.id;
87
+ dynamicEvents.dynamicEvents.emit('primaryWalletChanged', primaryWallet);
88
+ }
89
+ }, [primaryWallet]);
80
90
  const secondaryWallets = React.useMemo(() => canHaveMultipleWalletsConnected
81
91
  ? wallets.filter((wallet) => wallet.id !== primaryWalletId)
82
92
  : [], [primaryWalletId, wallets, canHaveMultipleWalletsConnected]);
@@ -1,6 +1,6 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
- import { useState, useMemo, useEffect, useCallback } from 'react';
3
+ import { useState, useRef, useMemo, useEffect, useCallback } from 'react';
4
4
  import { DynamicError } from '@dynamic-labs/utils';
5
5
  import { isEmbeddedConnector, isEmailWalletConnector } from '@dynamic-labs/wallet-connector-core';
6
6
  import { useInternalUserWallets } from '../../../context/UserWalletsContext/UserWalletsContext.js';
@@ -14,11 +14,14 @@ import '../../constants/colors.js';
14
14
  import '../../constants/values.js';
15
15
  import '../../../store/state/loadingAndLifecycle.js';
16
16
  import '../../../shared/consts/index.js';
17
+ import { dynamicEvents } from '../../../events/dynamicEvents.js';
17
18
  import { createLinkedWalletsFromWalletOptions } from './utils/createLinkedWalletsFromWalletOptions/createLinkedWalletsFromWalletOptions.js';
18
19
  import { updateUserWalletsFromLinkedWallets } from './utils/updateUserWalletsFromLinkedWallets/updateUserWalletsFromLinkedWallets.js';
19
20
 
20
21
  const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOptions, setMultiWalletWidgetState, primaryWalletId, setPrimaryWalletId, user, canHaveMultipleWalletsConnected, separateSmartWalletAndSigner = false, }) => {
21
22
  const [showQrcodeModal, setShowQrcodeModal] = useState(false);
23
+ // keeps track of the last primary wallet id to avoid emitting the same event multiple times
24
+ const lastPrimaryWalletId = useRef(primaryWalletId);
22
25
  const linkedWallets = useMemo(() => {
23
26
  if (!user) {
24
27
  return [];
@@ -73,6 +76,13 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
73
76
  setUserWallets((userWallets) => updateUserWalletsFromLinkedWallets(userWallets, wallets));
74
77
  }, [setUserWallets, wallets]);
75
78
  const primaryWallet = useMemo(() => { var _a; return (_a = wallets.find((wallet) => wallet.id === primaryWalletId)) !== null && _a !== void 0 ? _a : null; }, [primaryWalletId, wallets]);
79
+ // emit primaryWalletChanged event if the primary wallet changes
80
+ useEffect(() => {
81
+ if (primaryWallet && primaryWallet.id !== lastPrimaryWalletId.current) {
82
+ lastPrimaryWalletId.current = primaryWallet.id;
83
+ dynamicEvents.emit('primaryWalletChanged', primaryWallet);
84
+ }
85
+ }, [primaryWallet]);
76
86
  const secondaryWallets = useMemo(() => canHaveMultipleWalletsConnected
77
87
  ? wallets.filter((wallet) => wallet.id !== primaryWalletId)
78
88
  : [], [primaryWalletId, wallets, canHaveMultipleWalletsConnected]);
@@ -178,8 +178,8 @@ const useWalletUiUtils = ({ appLogoUrl, appName, hideEmbeddedWalletTransactionUI
178
178
  const syncWallet = React.useCallback((_d) => _tslib.__awaiter(void 0, [_d], void 0, function* ({ walletConnector, activeAddress, expectedAddress }) {
179
179
  yield openSyncWalletPrompt((resolve, reject) => (jsxRuntime.jsx(SyncWalletPromptModal.SyncWalletPromptModal, { onResolve: resolve, onReject: reject, connector: walletConnector, expectedAddress: expectedAddress, activeAddress: activeAddress })));
180
180
  }), [openSyncWalletPrompt]);
181
- const addNetwork = React.useCallback((_e) => _tslib.__awaiter(void 0, [_e], void 0, function* ({ handler, network, walletKey }) {
182
- yield openAddNetwork((resolve) => (jsxRuntime.jsx(AddNetworkModal.AddNetworkModal, { network: network, walletKey: walletKey, onCancel: resolve, onNetworkAdded: resolve, addNetworkMutation: handler })));
181
+ const addNetwork = React.useCallback((_e) => _tslib.__awaiter(void 0, [_e], void 0, function* ({ handler, network, walletConnector }) {
182
+ yield openAddNetwork((resolve) => (jsxRuntime.jsx(AddNetworkModal.AddNetworkModal, { network: network, walletConnector: walletConnector, onCancel: resolve, onNetworkAdded: resolve, addNetworkMutation: handler })));
183
183
  }), [openAddNetwork]);
184
184
  const disabledConfirmationOnce = React.useCallback(() => {
185
185
  confirmationStateRef.current = 'disabled';
@@ -174,8 +174,8 @@ const useWalletUiUtils = ({ appLogoUrl, appName, hideEmbeddedWalletTransactionUI
174
174
  const syncWallet = useCallback((_d) => __awaiter(void 0, [_d], void 0, function* ({ walletConnector, activeAddress, expectedAddress }) {
175
175
  yield openSyncWalletPrompt((resolve, reject) => (jsx(SyncWalletPromptModal, { onResolve: resolve, onReject: reject, connector: walletConnector, expectedAddress: expectedAddress, activeAddress: activeAddress })));
176
176
  }), [openSyncWalletPrompt]);
177
- const addNetwork = useCallback((_e) => __awaiter(void 0, [_e], void 0, function* ({ handler, network, walletKey }) {
178
- yield openAddNetwork((resolve) => (jsx(AddNetworkModal, { network: network, walletKey: walletKey, onCancel: resolve, onNetworkAdded: resolve, addNetworkMutation: handler })));
177
+ const addNetwork = useCallback((_e) => __awaiter(void 0, [_e], void 0, function* ({ handler, network, walletConnector }) {
178
+ yield openAddNetwork((resolve) => (jsx(AddNetworkModal, { network: network, walletConnector: walletConnector, onCancel: resolve, onNetworkAdded: resolve, addNetworkMutation: handler })));
179
179
  }), [openAddNetwork]);
180
180
  const disabledConfirmationOnce = useCallback(() => {
181
181
  confirmationStateRef.current = 'disabled';
@@ -5,7 +5,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
7
  var reactI18next = require('react-i18next');
8
- var walletBook = require('@dynamic-labs/wallet-book');
9
8
  require('react');
10
9
  require('../../events/dynamicEvents.cjs');
11
10
  require('../../../../_virtual/_tslib.cjs');
@@ -17,6 +16,7 @@ require('@dynamic-labs/iconic');
17
16
  require('@dynamic-labs/wallet-connector-core');
18
17
  require('../../context/ViewContext/ViewContext.cjs');
19
18
  var error = require('../../shared/assets/error.cjs');
19
+ require('@dynamic-labs/wallet-book');
20
20
  require('../../utils/constants/colors.cjs');
21
21
  require('../../utils/constants/values.cjs');
22
22
  require('../../store/state/loadingAndLifecycle.cjs');
@@ -88,17 +88,17 @@ require('../../../index.cjs');
88
88
  require('../../store/state/tokenBalances.cjs');
89
89
  require('../../shared/utils/functions/getInitialUrl/getInitialUrl.cjs');
90
90
 
91
- const AddNetworkView = ({ walletKey, network, addNetworkMutation, onCancel, onNetworkAdded, }) => {
91
+ const AddNetworkView = ({ walletConnector, network, addNetworkMutation, onCancel, onNetworkAdded, }) => {
92
92
  const { t } = reactI18next.useTranslation();
93
- const { walletBook: walletBook$1 } = walletBook.useWalletBookContext();
94
93
  const { iconUrls, name } = network;
95
- const wallet = walletBook.findWalletBookWallet(walletBook$1, walletKey);
96
94
  const [iconUrl] = iconUrls;
97
95
  const { mutate: addNetwork } = useMutation.useMutation(addNetworkMutation, {
98
96
  onSuccess: onNetworkAdded,
99
97
  });
100
98
  const NetworkIcon = (props) => (jsxRuntime.jsx("img", Object.assign({}, props, { src: iconUrl, className: 'add-network-view__network-icon', alt: `${name} icon` })));
101
- return (jsxRuntime.jsxs("div", { "data-testid": 'add-network-view', className: 'add-network-view', children: [jsxRuntime.jsx(ModalHeader.ModalHeader, { alignContent: 'bottom' }), jsxRuntime.jsxs("div", { className: 'add-network-view__body', children: [jsxRuntime.jsx(IconWithStatus.IconWithStatus, { Icon: NetworkIcon, iconSize: 64, InnerIcon: error.ReactComponent, variant: 'red' }), jsxRuntime.jsxs("div", { className: 'add-network-view__text-container', children: [jsxRuntime.jsx(Typography.Typography, { weight: 'bold', variant: 'body_normal', color: 'primary', copykey: 'dyn_add_network_view.title', className: 'add-network-view__title', children: t('dyn_add_network_view.title') }), jsxRuntime.jsx(Typography.Typography, { weight: 'regular', variant: 'body_small', color: 'secondary', copykey: 'dyn_add_network_view.description', className: 'add-network-view__description', children: t('dyn_add_network_view.description', { name: wallet === null || wallet === void 0 ? void 0 : wallet.name }) })] }), jsxRuntime.jsxs("div", { className: 'add-network-view__actions', children: [jsxRuntime.jsx(Button.Button, { expanded: true, buttonVariant: 'primary', onClick: () => onCancel(), dataTestId: 'add-network-view__cancel-button', children: jsxRuntime.jsx(Typography.Typography, { copykey: 'dyn_add_network_view.cancel_button.title', children: t('dyn_add_network_view.cancel_button.title') }) }), jsxRuntime.jsx(Button.Button, { expanded: true, buttonVariant: 'brand-primary', onClick: () => addNetwork(), children: jsxRuntime.jsx(Typography.Typography, { copykey: 'dyn_add_network_view.add_button.title', children: t('dyn_add_network_view.add_button.title') }) })] })] })] }));
99
+ return (jsxRuntime.jsxs("div", { "data-testid": 'add-network-view', className: 'add-network-view', children: [jsxRuntime.jsx(ModalHeader.ModalHeader, { alignContent: 'bottom' }), jsxRuntime.jsxs("div", { className: 'add-network-view__body', children: [jsxRuntime.jsx(IconWithStatus.IconWithStatus, { Icon: NetworkIcon, iconSize: 64, InnerIcon: error.ReactComponent, variant: 'red' }), jsxRuntime.jsxs("div", { className: 'add-network-view__text-container', children: [jsxRuntime.jsx(Typography.Typography, { weight: 'bold', variant: 'body_normal', color: 'primary', copykey: 'dyn_add_network_view.title', className: 'add-network-view__title', children: t('dyn_add_network_view.title') }), jsxRuntime.jsx(Typography.Typography, { weight: 'regular', variant: 'body_small', color: 'secondary', copykey: 'dyn_add_network_view.description', className: 'add-network-view__description', children: t('dyn_add_network_view.description', {
100
+ name: walletConnector.metadata.name,
101
+ }) })] }), jsxRuntime.jsxs("div", { className: 'add-network-view__actions', children: [jsxRuntime.jsx(Button.Button, { expanded: true, buttonVariant: 'primary', onClick: () => onCancel(), dataTestId: 'add-network-view__cancel-button', children: jsxRuntime.jsx(Typography.Typography, { copykey: 'dyn_add_network_view.cancel_button.title', children: t('dyn_add_network_view.cancel_button.title') }) }), jsxRuntime.jsx(Button.Button, { expanded: true, buttonVariant: 'brand-primary', onClick: () => addNetwork(), children: jsxRuntime.jsx(Typography.Typography, { copykey: 'dyn_add_network_view.add_button.title', children: t('dyn_add_network_view.add_button.title') }) })] })] })] }));
102
102
  };
103
103
 
104
104
  exports.AddNetworkView = AddNetworkView;
@@ -1,7 +1,8 @@
1
1
  import { FC } from 'react';
2
2
  import { GenericNetwork } from '@dynamic-labs/types';
3
+ import { InternalWalletConnector } from '@dynamic-labs/wallet-connector-core';
3
4
  type AddNetworkViewProps = {
4
- walletKey: string;
5
+ walletConnector: InternalWalletConnector;
5
6
  addNetworkMutation: () => Promise<void>;
6
7
  onCancel: () => void;
7
8
  onNetworkAdded: () => void;
@@ -1,7 +1,6 @@
1
1
  'use client'
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import { useTranslation } from 'react-i18next';
4
- import { useWalletBookContext, findWalletBookWallet } from '@dynamic-labs/wallet-book';
5
4
  import 'react';
6
5
  import '../../events/dynamicEvents.js';
7
6
  import '../../../../_virtual/_tslib.js';
@@ -13,6 +12,7 @@ import '@dynamic-labs/iconic';
13
12
  import '@dynamic-labs/wallet-connector-core';
14
13
  import '../../context/ViewContext/ViewContext.js';
15
14
  import { ReactComponent as SvgError } from '../../shared/assets/error.js';
15
+ import '@dynamic-labs/wallet-book';
16
16
  import '../../utils/constants/colors.js';
17
17
  import '../../utils/constants/values.js';
18
18
  import '../../store/state/loadingAndLifecycle.js';
@@ -84,17 +84,17 @@ import '../../../index.js';
84
84
  import '../../store/state/tokenBalances.js';
85
85
  import '../../shared/utils/functions/getInitialUrl/getInitialUrl.js';
86
86
 
87
- const AddNetworkView = ({ walletKey, network, addNetworkMutation, onCancel, onNetworkAdded, }) => {
87
+ const AddNetworkView = ({ walletConnector, network, addNetworkMutation, onCancel, onNetworkAdded, }) => {
88
88
  const { t } = useTranslation();
89
- const { walletBook } = useWalletBookContext();
90
89
  const { iconUrls, name } = network;
91
- const wallet = findWalletBookWallet(walletBook, walletKey);
92
90
  const [iconUrl] = iconUrls;
93
91
  const { mutate: addNetwork } = useMutation(addNetworkMutation, {
94
92
  onSuccess: onNetworkAdded,
95
93
  });
96
94
  const NetworkIcon = (props) => (jsx("img", Object.assign({}, props, { src: iconUrl, className: 'add-network-view__network-icon', alt: `${name} icon` })));
97
- return (jsxs("div", { "data-testid": 'add-network-view', className: 'add-network-view', children: [jsx(ModalHeader, { alignContent: 'bottom' }), jsxs("div", { className: 'add-network-view__body', children: [jsx(IconWithStatus, { Icon: NetworkIcon, iconSize: 64, InnerIcon: SvgError, variant: 'red' }), jsxs("div", { className: 'add-network-view__text-container', children: [jsx(Typography, { weight: 'bold', variant: 'body_normal', color: 'primary', copykey: 'dyn_add_network_view.title', className: 'add-network-view__title', children: t('dyn_add_network_view.title') }), jsx(Typography, { weight: 'regular', variant: 'body_small', color: 'secondary', copykey: 'dyn_add_network_view.description', className: 'add-network-view__description', children: t('dyn_add_network_view.description', { name: wallet === null || wallet === void 0 ? void 0 : wallet.name }) })] }), jsxs("div", { className: 'add-network-view__actions', children: [jsx(Button, { expanded: true, buttonVariant: 'primary', onClick: () => onCancel(), dataTestId: 'add-network-view__cancel-button', children: jsx(Typography, { copykey: 'dyn_add_network_view.cancel_button.title', children: t('dyn_add_network_view.cancel_button.title') }) }), jsx(Button, { expanded: true, buttonVariant: 'brand-primary', onClick: () => addNetwork(), children: jsx(Typography, { copykey: 'dyn_add_network_view.add_button.title', children: t('dyn_add_network_view.add_button.title') }) })] })] })] }));
95
+ return (jsxs("div", { "data-testid": 'add-network-view', className: 'add-network-view', children: [jsx(ModalHeader, { alignContent: 'bottom' }), jsxs("div", { className: 'add-network-view__body', children: [jsx(IconWithStatus, { Icon: NetworkIcon, iconSize: 64, InnerIcon: SvgError, variant: 'red' }), jsxs("div", { className: 'add-network-view__text-container', children: [jsx(Typography, { weight: 'bold', variant: 'body_normal', color: 'primary', copykey: 'dyn_add_network_view.title', className: 'add-network-view__title', children: t('dyn_add_network_view.title') }), jsx(Typography, { weight: 'regular', variant: 'body_small', color: 'secondary', copykey: 'dyn_add_network_view.description', className: 'add-network-view__description', children: t('dyn_add_network_view.description', {
96
+ name: walletConnector.metadata.name,
97
+ }) })] }), jsxs("div", { className: 'add-network-view__actions', children: [jsx(Button, { expanded: true, buttonVariant: 'primary', onClick: () => onCancel(), dataTestId: 'add-network-view__cancel-button', children: jsx(Typography, { copykey: 'dyn_add_network_view.cancel_button.title', children: t('dyn_add_network_view.cancel_button.title') }) }), jsx(Button, { expanded: true, buttonVariant: 'brand-primary', onClick: () => addNetwork(), children: jsx(Typography, { copykey: 'dyn_add_network_view.add_button.title', children: t('dyn_add_network_view.add_button.title') }) })] })] })] }));
98
98
  };
99
99
 
100
100
  export { AddNetworkView };
@@ -8,6 +8,7 @@ var React = require('react');
8
8
  var reactI18next = require('react-i18next');
9
9
  var utils = require('@dynamic-labs/utils');
10
10
  var walletBook = require('@dynamic-labs/wallet-book');
11
+ var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
11
12
  var Icon = require('../../components/Icon/Icon.cjs');
12
13
  var IconWithSpinner = require('../../components/IconWithSpinner/IconWithSpinner.cjs');
13
14
  var Typography = require('../../components/Typography/Typography.cjs');
@@ -16,7 +17,6 @@ require('../../context/DynamicContext/DynamicContext.cjs');
16
17
  require('@dynamic-labs/sdk-api-core');
17
18
  require('../../shared/logger.cjs');
18
19
  require('@dynamic-labs/iconic');
19
- require('@dynamic-labs/wallet-connector-core');
20
20
  require('../../context/ViewContext/ViewContext.cjs');
21
21
  var externalLink = require('../../shared/assets/externalLink.cjs');
22
22
  require('../../utils/constants/colors.cjs');
@@ -91,11 +91,9 @@ var useInternalDynamicContext = require('../../context/DynamicContext/useDynamic
91
91
 
92
92
  const MobileWalletRedirectView = ({ onRetry, }) => {
93
93
  const { selectedWalletConnector } = useInternalDynamicContext.useInternalDynamicContext();
94
- const { walletBook: walletBook$1 } = walletBook.useWalletBookContext();
95
94
  const { t } = reactI18next.useTranslation();
96
95
  const { storeName, walletLink } = React.useMemo(() => {
97
- const walletLinks = selectedWalletConnector &&
98
- walletBook.getWalletLinks(walletBook$1, selectedWalletConnector.key);
96
+ const walletLinks = walletConnectorCore.getWalletLinks(selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.metadata.downloadLinks);
99
97
  if (walletLinks && utils.isIOS())
100
98
  return {
101
99
  storeName: 'App Store',
@@ -110,7 +108,7 @@ const MobileWalletRedirectView = ({ onRetry, }) => {
110
108
  storeName: undefined,
111
109
  walletLink: undefined,
112
110
  };
113
- }, [selectedWalletConnector, walletBook$1]);
111
+ }, [selectedWalletConnector]);
114
112
  const openWalletApp = () => walletLink && window.open(walletLink, '_blank', 'noopener,noreferrer');
115
113
  const makeIcon = (size) => (jsxRuntime.jsx(walletBook.WalletIcon, { icon: selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.metadata.icon, walletKey: selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.key, style: {
116
114
  height: pixelToRem.pixelToRem(size),
@@ -3,7 +3,8 @@ import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import { useMemo } from 'react';
4
4
  import { useTranslation } from 'react-i18next';
5
5
  import { isIOS, isAndroid, isSamsungBrowser } from '@dynamic-labs/utils';
6
- import { useWalletBookContext, getWalletLinks, WalletIcon } from '@dynamic-labs/wallet-book';
6
+ import { WalletIcon } from '@dynamic-labs/wallet-book';
7
+ import { getWalletLinks } from '@dynamic-labs/wallet-connector-core';
7
8
  import { Icon } from '../../components/Icon/Icon.js';
8
9
  import { IconWithSpinner, iconRatio } from '../../components/IconWithSpinner/IconWithSpinner.js';
9
10
  import { Typography } from '../../components/Typography/Typography.js';
@@ -12,7 +13,6 @@ import '../../context/DynamicContext/DynamicContext.js';
12
13
  import '@dynamic-labs/sdk-api-core';
13
14
  import '../../shared/logger.js';
14
15
  import '@dynamic-labs/iconic';
15
- import '@dynamic-labs/wallet-connector-core';
16
16
  import '../../context/ViewContext/ViewContext.js';
17
17
  import { ReactComponent as SvgExternalLink } from '../../shared/assets/externalLink.js';
18
18
  import '../../utils/constants/colors.js';
@@ -87,11 +87,9 @@ import { useInternalDynamicContext } from '../../context/DynamicContext/useDynam
87
87
 
88
88
  const MobileWalletRedirectView = ({ onRetry, }) => {
89
89
  const { selectedWalletConnector } = useInternalDynamicContext();
90
- const { walletBook } = useWalletBookContext();
91
90
  const { t } = useTranslation();
92
91
  const { storeName, walletLink } = useMemo(() => {
93
- const walletLinks = selectedWalletConnector &&
94
- getWalletLinks(walletBook, selectedWalletConnector.key);
92
+ const walletLinks = getWalletLinks(selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.metadata.downloadLinks);
95
93
  if (walletLinks && isIOS())
96
94
  return {
97
95
  storeName: 'App Store',
@@ -106,7 +104,7 @@ const MobileWalletRedirectView = ({ onRetry, }) => {
106
104
  storeName: undefined,
107
105
  walletLink: undefined,
108
106
  };
109
- }, [selectedWalletConnector, walletBook]);
107
+ }, [selectedWalletConnector]);
110
108
  const openWalletApp = () => walletLink && window.open(walletLink, '_blank', 'noopener,noreferrer');
111
109
  const makeIcon = (size) => (jsx(WalletIcon, { icon: selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.metadata.icon, walletKey: selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.key, style: {
112
110
  height: pixelToRem(size),
@@ -6,6 +6,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
7
  var reactI18next = require('react-i18next');
8
8
  var walletBook = require('@dynamic-labs/wallet-book');
9
+ var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
9
10
  require('../../components/Accordion/components/AccordionItem/AccordionItem.cjs');
10
11
  require('../../components/Alert/Alert.cjs');
11
12
  require('react');
@@ -16,7 +17,6 @@ require('../../context/DynamicContext/DynamicContext.cjs');
16
17
  require('@dynamic-labs/sdk-api-core');
17
18
  require('../../shared/logger.cjs');
18
19
  require('@dynamic-labs/iconic');
19
- require('@dynamic-labs/wallet-connector-core');
20
20
  require('../../context/ViewContext/ViewContext.cjs');
21
21
  require('../../utils/constants/colors.cjs');
22
22
  require('../../utils/constants/values.cjs');
@@ -89,20 +89,19 @@ require('qrcode');
89
89
 
90
90
  const NoQrNotInstalledView = () => {
91
91
  const { selectedWalletConnector } = useInternalDynamicContext.useInternalDynamicContext();
92
- const { walletBook: walletBook$1 } = walletBook.useWalletBookContext();
93
92
  const { t } = reactI18next.useTranslation();
94
93
  if (!selectedWalletConnector) {
95
94
  return null;
96
95
  }
97
- const downloadLinks = Object.entries(walletBook.getWalletLinks(walletBook$1, selectedWalletConnector.key))
96
+ const { metadata } = selectedWalletConnector;
97
+ const downloadLinks = Object.entries(walletConnectorCore.getWalletLinks(metadata.downloadLinks))
98
98
  .filter(([, link]) => link !== '')
99
99
  .filter(([name]) => name !== 'ios' && name !== 'android')
100
100
  .map(([name, link]) => (jsxRuntime.jsx(WalletHelpLink.WalletHelpLink, { name: name, link: link,
101
101
  // justification: we're looping over the keys of walletLinks.desktop
102
102
  Icon: getBrowserIcon.getBrowserIcon(name) }, name)));
103
- return (jsxRuntime.jsxs("div", { className: 'no-qr-code-installed__container', "data-testid": 'no-qr-code-installed', children: [jsxRuntime.jsx("div", { className: 'no-qr-code-installed__img', children: jsxRuntime.jsx(walletBook.WalletIcon, { icon: selectedWalletConnector.metadata.icon, walletKey: selectedWalletConnector.key, style: { height: pixelToRem.pixelToRem(64), width: pixelToRem.pixelToRem(64) } }) }), jsxRuntime.jsx(Typography.Typography, { className: 'no-qr-code-installed__typography--title', variant: 'title', copykey: 'dyn_qr_code.wallet_not_installed.install', children: t('dyn_qr_code.wallet_not_installed.install', {
104
- wallet: walletBook.getWalletBookWallet(walletBook$1, selectedWalletConnector.key)
105
- .name,
103
+ return (jsxRuntime.jsxs("div", { className: 'no-qr-code-installed__container', "data-testid": 'no-qr-code-installed', children: [jsxRuntime.jsx("div", { className: 'no-qr-code-installed__img', children: jsxRuntime.jsx(walletBook.WalletIcon, { icon: metadata.icon, walletKey: selectedWalletConnector.key, style: { height: pixelToRem.pixelToRem(64), width: pixelToRem.pixelToRem(64) } }) }), jsxRuntime.jsx(Typography.Typography, { className: 'no-qr-code-installed__typography--title', variant: 'title', copykey: 'dyn_qr_code.wallet_not_installed.install', children: t('dyn_qr_code.wallet_not_installed.install', {
104
+ wallet: metadata.name,
106
105
  }) }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', className: 'no-qr-code-installed__typography', color: 'secondary', copykey: 'dyn_qr_code.wallet_not_installed.select', children: t('dyn_qr_code.wallet_not_installed.select') }), jsxRuntime.jsx("div", { className: 'no-qr-code-installed__links-section', children: downloadLinks }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_mini', className: 'no-qr-code-installed__typography', weight: 'medium', color: 'secondary', copykey: 'dyn_qr_code.wallet_not_installed.refresh', children: t('dyn_qr_code.wallet_not_installed.refresh') })] }));
107
106
  };
108
107
 
@@ -1,7 +1,8 @@
1
1
  'use client'
2
2
  import { jsx, jsxs } from 'react/jsx-runtime';
3
3
  import { useTranslation } from 'react-i18next';
4
- import { useWalletBookContext, getWalletLinks, WalletIcon, getWalletBookWallet } from '@dynamic-labs/wallet-book';
4
+ import { WalletIcon } from '@dynamic-labs/wallet-book';
5
+ import { getWalletLinks } from '@dynamic-labs/wallet-connector-core';
5
6
  import '../../components/Accordion/components/AccordionItem/AccordionItem.js';
6
7
  import '../../components/Alert/Alert.js';
7
8
  import 'react';
@@ -12,7 +13,6 @@ import '../../context/DynamicContext/DynamicContext.js';
12
13
  import '@dynamic-labs/sdk-api-core';
13
14
  import '../../shared/logger.js';
14
15
  import '@dynamic-labs/iconic';
15
- import '@dynamic-labs/wallet-connector-core';
16
16
  import '../../context/ViewContext/ViewContext.js';
17
17
  import '../../utils/constants/colors.js';
18
18
  import '../../utils/constants/values.js';
@@ -85,20 +85,19 @@ import 'qrcode';
85
85
 
86
86
  const NoQrNotInstalledView = () => {
87
87
  const { selectedWalletConnector } = useInternalDynamicContext();
88
- const { walletBook } = useWalletBookContext();
89
88
  const { t } = useTranslation();
90
89
  if (!selectedWalletConnector) {
91
90
  return null;
92
91
  }
93
- const downloadLinks = Object.entries(getWalletLinks(walletBook, selectedWalletConnector.key))
92
+ const { metadata } = selectedWalletConnector;
93
+ const downloadLinks = Object.entries(getWalletLinks(metadata.downloadLinks))
94
94
  .filter(([, link]) => link !== '')
95
95
  .filter(([name]) => name !== 'ios' && name !== 'android')
96
96
  .map(([name, link]) => (jsx(WalletHelpLink, { name: name, link: link,
97
97
  // justification: we're looping over the keys of walletLinks.desktop
98
98
  Icon: getBrowserIcon(name) }, name)));
99
- return (jsxs("div", { className: 'no-qr-code-installed__container', "data-testid": 'no-qr-code-installed', children: [jsx("div", { className: 'no-qr-code-installed__img', children: jsx(WalletIcon, { icon: selectedWalletConnector.metadata.icon, walletKey: selectedWalletConnector.key, style: { height: pixelToRem(64), width: pixelToRem(64) } }) }), jsx(Typography, { className: 'no-qr-code-installed__typography--title', variant: 'title', copykey: 'dyn_qr_code.wallet_not_installed.install', children: t('dyn_qr_code.wallet_not_installed.install', {
100
- wallet: getWalletBookWallet(walletBook, selectedWalletConnector.key)
101
- .name,
99
+ return (jsxs("div", { className: 'no-qr-code-installed__container', "data-testid": 'no-qr-code-installed', children: [jsx("div", { className: 'no-qr-code-installed__img', children: jsx(WalletIcon, { icon: metadata.icon, walletKey: selectedWalletConnector.key, style: { height: pixelToRem(64), width: pixelToRem(64) } }) }), jsx(Typography, { className: 'no-qr-code-installed__typography--title', variant: 'title', copykey: 'dyn_qr_code.wallet_not_installed.install', children: t('dyn_qr_code.wallet_not_installed.install', {
100
+ wallet: metadata.name,
102
101
  }) }), jsx(Typography, { variant: 'body_normal', className: 'no-qr-code-installed__typography', color: 'secondary', copykey: 'dyn_qr_code.wallet_not_installed.select', children: t('dyn_qr_code.wallet_not_installed.select') }), jsx("div", { className: 'no-qr-code-installed__links-section', children: downloadLinks }), jsx(Typography, { variant: 'body_mini', className: 'no-qr-code-installed__typography', weight: 'medium', color: 'secondary', copykey: 'dyn_qr_code.wallet_not_installed.refresh', children: t('dyn_qr_code.wallet_not_installed.refresh') })] }));
103
102
  };
104
103
 
@@ -3,16 +3,15 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var walletBook = require('@dynamic-labs/wallet-book');
6
+ var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
7
7
  var parseWalletLinks = require('../../../../utils/functions/parseWalletLinks/parseWalletLinks.cjs');
8
8
  var getBrowserIcon = require('../../../../shared/utils/functions/getBrowserIcon/getBrowserIcon.cjs');
9
9
 
10
10
  const useWalletDownloadLinks = (walletConnector) => {
11
- const { walletBook: walletBook$1 } = walletBook.useWalletBookContext();
12
- if (!walletConnector) {
11
+ if (!(walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.metadata.downloadLinks)) {
13
12
  return [];
14
13
  }
15
- const walletLinks = walletBook.getWalletLinks(walletBook$1, walletConnector.key);
14
+ const walletLinks = walletConnectorCore.getWalletLinks(walletConnector.metadata.downloadLinks);
16
15
  const { currentDesktopUrl, userBrowser } = parseWalletLinks.parseWalletLinks(walletLinks);
17
16
  if (userBrowser && currentDesktopUrl) {
18
17
  return [
@@ -1,14 +1,13 @@
1
1
  'use client'
2
- import { useWalletBookContext, getWalletLinks } from '@dynamic-labs/wallet-book';
2
+ import { getWalletLinks } from '@dynamic-labs/wallet-connector-core';
3
3
  import { parseWalletLinks } from '../../../../utils/functions/parseWalletLinks/parseWalletLinks.js';
4
4
  import { getBrowserIcon } from '../../../../shared/utils/functions/getBrowserIcon/getBrowserIcon.js';
5
5
 
6
6
  const useWalletDownloadLinks = (walletConnector) => {
7
- const { walletBook } = useWalletBookContext();
8
- if (!walletConnector) {
7
+ if (!(walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.metadata.downloadLinks)) {
9
8
  return [];
10
9
  }
11
- const walletLinks = getWalletLinks(walletBook, walletConnector.key);
10
+ const walletLinks = getWalletLinks(walletConnector.metadata.downloadLinks);
12
11
  const { currentDesktopUrl, userBrowser } = parseWalletLinks(walletLinks);
13
12
  if (userBrowser && currentDesktopUrl) {
14
13
  return [
@@ -89,13 +89,12 @@ require('qrcode');
89
89
 
90
90
  const NoQrNotInstalledModalView = () => {
91
91
  const { selectedWalletConnector } = useInternalDynamicContext.useInternalDynamicContext();
92
- const { walletBook: walletBook$1 } = walletBook.useWalletBookContext();
93
92
  const downloadLinks = useWalletDownloadLinks.useWalletDownloadLinks(selectedWalletConnector);
94
93
  if (!selectedWalletConnector) {
95
94
  return null;
96
95
  }
97
- const walletName = walletBook.getWalletBookWallet(walletBook$1, selectedWalletConnector.key, selectedWalletConnector.walletFallback).name;
98
- return (jsxRuntime.jsxs("div", { className: 'no-qr-code-not-installed-modal-view', "data-testid": 'no-qr-code-not-installed', children: [jsxRuntime.jsx(walletBook.WalletIcon, { icon: selectedWalletConnector.metadata.icon, walletKey: selectedWalletConnector.key, style: { height: pixelToRem.pixelToRem(64), width: pixelToRem.pixelToRem(64) } }), jsxRuntime.jsxs(Typography.Typography, { variant: 'body_normal', color: 'primary', children: ["We can\u2019t detect ", walletName, " extension"] }), Array.isArray(downloadLinks) && (jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', color: 'secondary', children: "Select from your preferred options below:" })), jsxRuntime.jsx("div", { className: 'no-qr-code-not-installed-modal-view__links-section', children: downloadLinks.map(({ key, name, link, Icon }) => (jsxRuntime.jsx(WalletHelpLink.WalletHelpLink, { name: name, link: link, Icon: Icon }, key))) }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_mini', color: 'secondary', children: "Refresh the page once installed" })] }));
96
+ const { name, icon } = selectedWalletConnector.metadata;
97
+ return (jsxRuntime.jsxs("div", { className: 'no-qr-code-not-installed-modal-view', "data-testid": 'no-qr-code-not-installed', children: [jsxRuntime.jsx(walletBook.WalletIcon, { icon: icon, walletKey: selectedWalletConnector.key, style: { height: pixelToRem.pixelToRem(64), width: pixelToRem.pixelToRem(64) } }), jsxRuntime.jsxs(Typography.Typography, { variant: 'body_normal', color: 'primary', children: ["We can\u2019t detect ", name, " extension"] }), downloadLinks.length > 0 && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', color: 'secondary', children: "Select from your preferred options below:" }), jsxRuntime.jsx("div", { className: 'no-qr-code-not-installed-modal-view__links-section', children: downloadLinks.map(({ key, name, link, Icon }) => (jsxRuntime.jsx(WalletHelpLink.WalletHelpLink, { name: name, link: link, Icon: Icon }, key))) })] })), jsxRuntime.jsx(Typography.Typography, { variant: 'body_mini', color: 'secondary', children: "Refresh the page once installed" })] }));
99
98
  };
100
99
 
101
100
  exports.NoQrNotInstalledModalView = NoQrNotInstalledModalView;
@@ -1,6 +1,6 @@
1
1
  'use client'
2
- import { jsxs, jsx } from 'react/jsx-runtime';
3
- import { useWalletBookContext, getWalletBookWallet, WalletIcon } from '@dynamic-labs/wallet-book';
2
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
+ import { WalletIcon } from '@dynamic-labs/wallet-book';
4
4
  import '../../../../components/Accordion/components/AccordionItem/AccordionItem.js';
5
5
  import '../../../../components/Alert/Alert.js';
6
6
  import 'react';
@@ -85,13 +85,12 @@ import 'qrcode';
85
85
 
86
86
  const NoQrNotInstalledModalView = () => {
87
87
  const { selectedWalletConnector } = useInternalDynamicContext();
88
- const { walletBook } = useWalletBookContext();
89
88
  const downloadLinks = useWalletDownloadLinks(selectedWalletConnector);
90
89
  if (!selectedWalletConnector) {
91
90
  return null;
92
91
  }
93
- const walletName = getWalletBookWallet(walletBook, selectedWalletConnector.key, selectedWalletConnector.walletFallback).name;
94
- return (jsxs("div", { className: 'no-qr-code-not-installed-modal-view', "data-testid": 'no-qr-code-not-installed', children: [jsx(WalletIcon, { icon: selectedWalletConnector.metadata.icon, walletKey: selectedWalletConnector.key, style: { height: pixelToRem(64), width: pixelToRem(64) } }), jsxs(Typography, { variant: 'body_normal', color: 'primary', children: ["We can\u2019t detect ", walletName, " extension"] }), Array.isArray(downloadLinks) && (jsx(Typography, { variant: 'body_normal', color: 'secondary', children: "Select from your preferred options below:" })), jsx("div", { className: 'no-qr-code-not-installed-modal-view__links-section', children: downloadLinks.map(({ key, name, link, Icon }) => (jsx(WalletHelpLink, { name: name, link: link, Icon: Icon }, key))) }), jsx(Typography, { variant: 'body_mini', color: 'secondary', children: "Refresh the page once installed" })] }));
92
+ const { name, icon } = selectedWalletConnector.metadata;
93
+ return (jsxs("div", { className: 'no-qr-code-not-installed-modal-view', "data-testid": 'no-qr-code-not-installed', children: [jsx(WalletIcon, { icon: icon, walletKey: selectedWalletConnector.key, style: { height: pixelToRem(64), width: pixelToRem(64) } }), jsxs(Typography, { variant: 'body_normal', color: 'primary', children: ["We can\u2019t detect ", name, " extension"] }), downloadLinks.length > 0 && (jsxs(Fragment, { children: [jsx(Typography, { variant: 'body_normal', color: 'secondary', children: "Select from your preferred options below:" }), jsx("div", { className: 'no-qr-code-not-installed-modal-view__links-section', children: downloadLinks.map(({ key, name, link, Icon }) => (jsx(WalletHelpLink, { name: name, link: link, Icon: Icon }, key))) })] })), jsx(Typography, { variant: 'body_mini', color: 'secondary', children: "Refresh the page once installed" })] }));
95
94
  };
96
95
 
97
96
  export { NoQrNotInstalledModalView };