@rango-dev/widget-embedded 0.36.1-next.1 → 0.36.1-next.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/QueueManager.d.ts.map +1 -1
  3. package/dist/components/Quote/Quote.d.ts.map +1 -1
  4. package/dist/components/Quote/Quote.types.d.ts +2 -0
  5. package/dist/components/Quote/Quote.types.d.ts.map +1 -1
  6. package/dist/components/Quote/QuoteCostDetails.d.ts.map +1 -1
  7. package/dist/components/Quote/QuoteCostDetails.styles.d.ts.map +1 -1
  8. package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
  9. package/dist/components/WalletStatefulConnect/DerivationPath.helpers.d.ts +2 -1
  10. package/dist/components/WalletStatefulConnect/DerivationPath.helpers.d.ts.map +1 -1
  11. package/dist/components/WalletStatefulConnect/Namespaces.types.d.ts +1 -1
  12. package/dist/components/WalletStatefulConnect/Namespaces.types.d.ts.map +1 -1
  13. package/dist/constants/quote.d.ts +2 -0
  14. package/dist/constants/quote.d.ts.map +1 -1
  15. package/dist/containers/ExpandedQuotes/ExpandedQuotes.styles.d.ts.map +1 -1
  16. package/dist/containers/WidgetInfo/WidgetInfo.helpers.d.ts +1 -1
  17. package/dist/hooks/useFetchCustomToken.d.ts.map +1 -1
  18. package/dist/hooks/useStatefulConnect/useStatefulConnect.d.ts +2 -1
  19. package/dist/hooks/useStatefulConnect/useStatefulConnect.d.ts.map +1 -1
  20. package/dist/hooks/useStatefulConnect/useStatefulConnect.types.d.ts +1 -1
  21. package/dist/hooks/useStatefulConnect/useStatefulConnect.types.d.ts.map +1 -1
  22. package/dist/index.js +2 -2
  23. package/dist/index.js.map +3 -3
  24. package/dist/store/slices/data.d.ts.map +1 -1
  25. package/dist/types/wallets.d.ts +2 -1
  26. package/dist/types/wallets.d.ts.map +1 -1
  27. package/dist/utils/hub.d.ts +1 -1
  28. package/dist/utils/hub.d.ts.map +1 -1
  29. package/dist/widget-embedded.build.json +1 -1
  30. package/package.json +8 -8
  31. package/src/QueueManager.tsx +11 -10
  32. package/src/components/Quote/Quote.tsx +22 -3
  33. package/src/components/Quote/Quote.types.ts +2 -0
  34. package/src/components/Quote/QuoteCostDetails.styles.ts +0 -1
  35. package/src/components/Quote/QuoteCostDetails.tsx +23 -4
  36. package/src/components/StatefulConnectModal/StatefulConnectModal.tsx +1 -1
  37. package/src/components/SwapDetails/SwapDetails.tsx +10 -7
  38. package/src/components/WalletStatefulConnect/DerivationPath.helpers.ts +2 -1
  39. package/src/components/WalletStatefulConnect/Namespaces.tsx +1 -1
  40. package/src/components/WalletStatefulConnect/Namespaces.types.tsx +1 -1
  41. package/src/constants/quote.ts +2 -0
  42. package/src/containers/ExpandedQuotes/ExpandedQuotes.styles.ts +1 -0
  43. package/src/containers/ExpandedQuotes/ExpandedQuotes.tsx +1 -1
  44. package/src/containers/WidgetInfo/WidgetInfo.helpers.ts +2 -2
  45. package/src/hooks/useFetchCustomToken.ts +5 -0
  46. package/src/hooks/useStatefulConnect/useStatefulConnect.ts +2 -5
  47. package/src/hooks/useStatefulConnect/useStatefulConnect.types.ts +1 -1
  48. package/src/store/slices/data.ts +3 -2
  49. package/src/types/wallets.ts +2 -1
  50. package/src/utils/hub.ts +8 -9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rango-dev/widget-embedded",
3
- "version": "0.36.1-next.1",
3
+ "version": "0.36.1-next.11",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "source": "./src/index.ts",
@@ -25,15 +25,15 @@
25
25
  "@lingui/core": "4.2.1",
26
26
  "@lingui/react": "4.2.1",
27
27
  "@rango-dev/logging-core": "^0.6.0",
28
- "@rango-dev/provider-all": "^0.40.1-next.1",
28
+ "@rango-dev/provider-all": "^0.40.1-next.6",
29
29
  "@rango-dev/queue-manager-core": "^0.27.0",
30
- "@rango-dev/queue-manager-rango-preset": "^0.40.1-next.1",
30
+ "@rango-dev/queue-manager-rango-preset": "^0.40.1-next.5",
31
31
  "@rango-dev/queue-manager-react": "^0.27.0",
32
- "@rango-dev/signer-solana": "^0.35.0",
33
- "@rango-dev/ui": "^0.42.1-next.1",
34
- "@rango-dev/wallets-core": "^0.40.1-next.1",
35
- "@rango-dev/wallets-react": "^0.26.1-next.1",
36
- "@rango-dev/wallets-shared": "^0.40.1-next.1",
32
+ "@rango-dev/signer-solana": "^0.35.1-next.0",
33
+ "@rango-dev/ui": "^0.42.1-next.8",
34
+ "@rango-dev/wallets-core": "^0.40.1-next.5",
35
+ "@rango-dev/wallets-react": "^0.26.1-next.6",
36
+ "@rango-dev/wallets-shared": "^0.40.1-next.5",
37
37
  "bignumber.js": "^9.1.1",
38
38
  "copy-to-clipboard": "^3.3.3",
39
39
  "dayjs": "^1.11.7",
@@ -1,5 +1,8 @@
1
- import type { SwapQueueContext } from '@rango-dev/queue-manager-rango-preset';
2
- import type { Network, WalletType } from '@rango-dev/wallets-shared';
1
+ import type {
2
+ SwapQueueContext,
3
+ TargetNamespace,
4
+ } from '@rango-dev/queue-manager-rango-preset';
5
+ import type { WalletType } from '@rango-dev/wallets-shared';
3
6
  import type { PropsWithChildren } from 'react';
4
7
 
5
8
  import {
@@ -48,16 +51,14 @@ function QueueManager(props: PropsWithChildren<{ apiKey?: string }>) {
48
51
  })),
49
52
  };
50
53
 
51
- const switchNetwork = async (wallet: WalletType, network: Network) => {
52
- if (!canSwitchNetworkTo(wallet, network)) {
54
+ const switchNetwork = async (
55
+ wallet: WalletType,
56
+ namespace: TargetNamespace
57
+ ) => {
58
+ if (!canSwitchNetworkTo(wallet, namespace.network)) {
53
59
  return undefined;
54
60
  }
55
- const result = await connect(wallet, [
56
- {
57
- namespace: 'DISCOVER_MODE',
58
- network,
59
- },
60
- ]);
61
+ const result = await connect(wallet, [namespace]);
61
62
 
62
63
  return result;
63
64
  };
@@ -17,7 +17,11 @@ import {
17
17
  import BigNumber from 'bignumber.js';
18
18
  import React, { useRef, useState } from 'react';
19
19
 
20
- import { GAS_FEE_MAX } from '../../constants/quote';
20
+ import {
21
+ GAS_FEE_MAX,
22
+ ROUTE_TIME_MAX,
23
+ SECONDS_IN_MINUTE,
24
+ } from '../../constants/quote';
21
25
  import {
22
26
  GAS_FEE_MAX_DECIMALS,
23
27
  GAS_FEE_MIN_DECIMALS,
@@ -311,7 +315,8 @@ export function Quote(props: QuoteProps) {
311
315
  const container = propContainer || getContainer();
312
316
  const sortedQuoteTags = sortTags(props.quote.tags || []);
313
317
  const showAllRoutesButton = !!onClickAllRoutes;
314
- const totalTime = roundedSecondsToString(totalArrivalTime(quote?.swaps));
318
+ const totalDurationSeconds = totalArrivalTime(quote?.swaps);
319
+ const totalTime = roundedSecondsToString(totalDurationSeconds);
315
320
  const totalFee = getTotalFeeInUsd(quote?.swaps ?? [], findToken);
316
321
  const fee = numberToString(
317
322
  totalFee,
@@ -320,6 +325,8 @@ export function Quote(props: QuoteProps) {
320
325
  );
321
326
 
322
327
  const feeWarning = totalFee.gte(new BigNumber(GAS_FEE_MAX));
328
+ const timeWarning =
329
+ totalDurationSeconds / SECONDS_IN_MINUTE >= ROUTE_TIME_MAX;
323
330
 
324
331
  return fullExpandedMode ? (
325
332
  <FullExpandedQuote
@@ -329,7 +336,18 @@ export function Quote(props: QuoteProps) {
329
336
  tooltipContainer={getExpanded()}
330
337
  steps={steps}
331
338
  tags={sortedQuoteTags}
332
- feeWarning={feeWarning}
339
+ quoteCost={
340
+ <QuoteCostDetails
341
+ quote={quote}
342
+ fullExpandedMode
343
+ time={totalTime}
344
+ fee={fee}
345
+ feeWarning={feeWarning}
346
+ timeWarning={timeWarning}
347
+ showModalFee={showModalFee}
348
+ steps={numberOfSteps}
349
+ />
350
+ }
333
351
  percentageChange={percentageChange}
334
352
  warningLevel={priceImpactWarningLevel}
335
353
  outputPrice={{
@@ -368,6 +386,7 @@ export function Quote(props: QuoteProps) {
368
386
  time={totalTime}
369
387
  fee={fee}
370
388
  feeWarning={feeWarning}
389
+ timeWarning={timeWarning}
371
390
  showModalFee={showModalFee}
372
391
  steps={numberOfSteps}
373
392
  />
@@ -48,5 +48,7 @@ export type QuoteCostDetailsProps = {
48
48
  fee: string;
49
49
  time: string;
50
50
  feeWarning?: boolean;
51
+ timeWarning?: boolean;
51
52
  showModalFee: boolean;
53
+ fullExpandedMode?: boolean;
52
54
  };
@@ -28,7 +28,6 @@ export const ModalContainer = styled('div', {
28
28
 
29
29
  export const ModalHeader = styled('div', {
30
30
  padding: '$20 $20 $10',
31
- textAlign: 'center',
32
31
  position: 'relative',
33
32
  '._icon-button': {
34
33
  position: 'absolute',
@@ -21,7 +21,7 @@ import {
21
21
  USD_VALUE_MAX_DECIMALS,
22
22
  USD_VALUE_MIN_DECIMALS,
23
23
  } from '../../constants/routing';
24
- import { getContainer } from '../../utils/common';
24
+ import { getContainer, getExpanded } from '../../utils/common';
25
25
  import { numberToString } from '../../utils/numbers';
26
26
  import { getFeesGroup, getTotalFeesInUsd, getUsdFee } from '../../utils/swap';
27
27
  import { WatermarkedModal } from '../common/WatermarkedModal';
@@ -57,9 +57,18 @@ const NonPayableFee = (props: { fee: BigNumber; label: string }) => {
57
57
  export function QuoteCostDetails(props: QuoteCostDetailsProps) {
58
58
  const [open, setOpen] = useState<boolean>(false);
59
59
  const [openCollapse, setOpenCollapse] = useState<boolean>(false);
60
- const { steps, quote, fee, time, feeWarning, showModalFee } = props;
60
+ const {
61
+ steps,
62
+ quote,
63
+ fee,
64
+ time,
65
+ feeWarning,
66
+ timeWarning,
67
+ showModalFee,
68
+ fullExpandedMode = false,
69
+ } = props;
61
70
  const swaps = quote?.swaps ?? [];
62
- const container = getContainer();
71
+ const container = fullExpandedMode ? getExpanded() : getContainer();
63
72
 
64
73
  const feesGroup = getFeesGroup(swaps);
65
74
 
@@ -76,6 +85,7 @@ export function QuoteCostDetails(props: QuoteCostDetailsProps) {
76
85
  }
77
86
  fee={fee}
78
87
  feeWarning={feeWarning}
88
+ timeWarning={timeWarning}
79
89
  time={time}
80
90
  steps={steps}
81
91
  tooltipGas={showModalFee ? i18n.t('View more info') : undefined}
@@ -85,8 +95,17 @@ export function QuoteCostDetails(props: QuoteCostDetailsProps) {
85
95
  <WatermarkedModal
86
96
  container={container}
87
97
  open={open}
98
+ anchor={fullExpandedMode ? 'center' : 'bottom'}
99
+ styles={{
100
+ container: {
101
+ maxWidth: fullExpandedMode ? '484px' : 'unset',
102
+ },
103
+ }}
88
104
  header={
89
- <ModalHeader>
105
+ <ModalHeader
106
+ style={{
107
+ textAlign: fullExpandedMode ? 'left' : 'center',
108
+ }}>
90
109
  <Typography variant="title" size="medium">
91
110
  {i18n.t('Gas & Fee Explanation')}
92
111
  </Typography>
@@ -1,6 +1,6 @@
1
1
  import type { Result } from '../../hooks/useStatefulConnect';
2
2
  import type { WalletInfoWithExtra } from '../../types';
3
- import type { Namespace } from '@rango-dev/wallets-shared';
3
+ import type { Namespace } from '@rango-dev/wallets-core/namespaces/common';
4
4
 
5
5
  import { Divider } from '@rango-dev/ui';
6
6
  import React, { useEffect, useRef, useState } from 'react';
@@ -3,7 +3,7 @@ import type { ModalState } from '../SwapDetailsModal';
3
3
 
4
4
  import { i18n } from '@lingui/core';
5
5
  import {
6
- getCurrentBlockchainOfOrNull,
6
+ getCurrentNamespaceOfOrNull,
7
7
  getCurrentStep,
8
8
  getRelatedWalletOrNull,
9
9
  } from '@rango-dev/queue-manager-rango-preset';
@@ -138,8 +138,8 @@ export function SwapDetails(props: SwapDetailsProps) {
138
138
  const lastConvertedTokenInFailedSwap =
139
139
  getLastConvertedTokenInFailedSwap(swap);
140
140
 
141
- const currentStepBlockchain = currentStep
142
- ? getCurrentBlockchainOfOrNull(swap, currentStep)
141
+ const currentStepNamespace = currentStep
142
+ ? getCurrentNamespaceOfOrNull(swap, currentStep)
143
143
  : null;
144
144
  const currentStepWallet = currentStep
145
145
  ? getRelatedWalletOrNull(swap, currentStep)
@@ -154,16 +154,19 @@ export function SwapDetails(props: SwapDetailsProps) {
154
154
  const showSwitchNetwork =
155
155
  currentStepNetworkStatus ===
156
156
  PendingSwapNetworkStatus.WaitingForNetworkChange &&
157
- !!currentStepBlockchain &&
157
+ !!currentStepNamespace &&
158
158
  !!currentStepWallet?.walletType &&
159
159
  (isMobileWallet(currentStepWallet.walletType) ||
160
- canSwitchNetworkTo(currentStepWallet.walletType, currentStepBlockchain));
160
+ canSwitchNetworkTo(
161
+ currentStepWallet.walletType,
162
+ currentStepNamespace.network
163
+ ));
161
164
 
162
165
  const switchNetwork = showSwitchNetwork
163
166
  ? connect.bind(null, currentStepWallet.walletType, [
164
167
  {
165
- namespace: 'DISCOVER_MODE',
166
- network: currentStepBlockchain,
168
+ namespace: currentStepNamespace.namespace,
169
+ network: currentStepNamespace.network,
167
170
  },
168
171
  ])
169
172
  : undefined;
@@ -1,4 +1,5 @@
1
- import type { DerivationPath, Namespace } from '@rango-dev/wallets-shared';
1
+ import type { Namespace } from '@rango-dev/wallets-core/namespaces/common';
2
+ import type { DerivationPath } from '@rango-dev/wallets-shared';
2
3
 
3
4
  import { namespaces } from '@rango-dev/wallets-shared';
4
5
 
@@ -1,5 +1,5 @@
1
1
  import type { PropTypes } from './Namespaces.types';
2
- import type { Namespace } from '@rango-dev/wallets-shared';
2
+ import type { Namespace } from '@rango-dev/wallets-core/namespaces/common';
3
3
 
4
4
  import { i18n } from '@lingui/core';
5
5
  import {
@@ -1,5 +1,5 @@
1
1
  import type { NeedsNamespacesState } from '../../hooks/useStatefulConnect';
2
- import type { Namespace } from '@rango-dev/wallets-shared';
2
+ import type { Namespace } from '@rango-dev/wallets-core/namespaces/common';
3
3
 
4
4
  export interface PropTypes {
5
5
  onConfirm: (namespaces: Namespace[]) => void;
@@ -33,3 +33,5 @@ export const HIGH_PRIORITY_TAGS: TagValue[] = [
33
33
  ];
34
34
 
35
35
  export const GAS_FEE_MAX = 30;
36
+ export const ROUTE_TIME_MAX = 15;
37
+ export const SECONDS_IN_MINUTE = 60;
@@ -4,6 +4,7 @@ export const Container = styled('div', {
4
4
  transition: 'width 0.2s, opacity 0.2s, margin-left 0.2s',
5
5
  height: '700px',
6
6
  width: '390px',
7
+ position: 'relative',
7
8
  opacity: 1,
8
9
  marginLeft: '$16',
9
10
  backgroundColor: '$neutral100',
@@ -64,7 +64,7 @@ export function ExpandedQuotes(props: PropTypes) {
64
64
  />
65
65
  <Content>
66
66
  <Quotes
67
- showModalFee={false}
67
+ showModalFee={true}
68
68
  fetch={fetch}
69
69
  hasSort={false}
70
70
  loading={loading}
@@ -5,7 +5,7 @@ import type { PendingSwap } from 'rango-types/lib';
5
5
 
6
6
  import {
7
7
  cancelSwap,
8
- getCurrentBlockchainOfOrNull,
8
+ getCurrentNamespaceOfOrNull,
9
9
  getCurrentStep,
10
10
  getRelatedWalletOrNull,
11
11
  } from '@rango-dev/queue-manager-rango-preset';
@@ -66,7 +66,7 @@ export class WidgetHistory {
66
66
  step: currentStep,
67
67
  wallet: currentStep ? getRelatedWalletOrNull(swap, currentStep) : null,
68
68
  network: currentStep
69
- ? getCurrentBlockchainOfOrNull(swap, currentStep)
69
+ ? getCurrentNamespaceOfOrNull(swap, currentStep)?.network
70
70
  : null,
71
71
  };
72
72
  }
@@ -103,6 +103,11 @@ export function useFetchCustomToken(): UseFetchCustomToken {
103
103
 
104
104
  return token;
105
105
  } catch (error: any) {
106
+ if (error?.code === 'ERR_BAD_REQUEST') {
107
+ const errorMessage = produceErrorMessage('not-found', blockchain);
108
+ setError(errorMessage);
109
+ return undefined;
110
+ }
106
111
  setError(undefined);
107
112
  throw new Error(error.message);
108
113
  } finally {
@@ -1,11 +1,8 @@
1
1
  import type { HandleConnectOptions, Result } from './useStatefulConnect.types';
2
2
  import type { WalletInfoWithExtra } from '../../types';
3
3
  import type { ExtendedModalWalletInfo } from '../../utils/wallets';
4
- import type {
5
- Namespace,
6
- NamespaceData,
7
- WalletType,
8
- } from '@rango-dev/wallets-shared';
4
+ import type { Namespace } from '@rango-dev/wallets-core/namespaces/common';
5
+ import type { NamespaceData, WalletType } from '@rango-dev/wallets-shared';
9
6
 
10
7
  import { WalletState } from '@rango-dev/ui';
11
8
  import { useWallets } from '@rango-dev/wallets-react';
@@ -1,4 +1,4 @@
1
- import type { Namespace } from '@rango-dev/wallets-shared';
1
+ import type { Namespace } from '@rango-dev/wallets-core/namespaces/common';
2
2
 
3
3
  export interface HandleConnectOptions {
4
4
  // To have a switch between connect and disconnect when user is clicking on a button, this option can be helpful.
@@ -348,8 +348,9 @@ export const createDataSlice: StateCreator<
348
348
  {};
349
349
  const tokens: Token[] = [];
350
350
  const popularTokens: Token[] = response.popularTokens;
351
- const swappers: SwapperMeta[] = response.swappers;
352
-
351
+ const swappers: SwapperMeta[] = response.swappers.filter(
352
+ (swapper) => swapper.enabled
353
+ );
353
354
  const blockchainsWithAtLeastOneToken = new Set();
354
355
 
355
356
  response.tokens.forEach((token) => {
@@ -1,5 +1,6 @@
1
1
  import type { WalletInfo } from '@rango-dev/ui';
2
- import type { Namespace, WalletType } from '@rango-dev/wallets-shared';
2
+ import type { Namespace } from '@rango-dev/wallets-core/namespaces/common';
3
+ import type { WalletType } from '@rango-dev/wallets-shared';
3
4
 
4
5
  export interface Wallet {
5
6
  chain: string;
package/src/utils/hub.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import type { CommonNamespaceKeys } from '@rango-dev/wallets-core';
2
-
3
- import { Namespace } from '@rango-dev/wallets-shared';
2
+ import type { Namespace } from '@rango-dev/wallets-core/namespaces/common';
4
3
 
5
4
  export function convertCommonNamespacesKeysToLegacyNamespace(
6
5
  namespaces: CommonNamespaceKeys[]
@@ -8,15 +7,15 @@ export function convertCommonNamespacesKeysToLegacyNamespace(
8
7
  return namespaces.map((namespace) => {
9
8
  switch (namespace) {
10
9
  case 'evm':
11
- return Namespace.Evm;
10
+ return 'EVM';
12
11
  case 'solana':
13
- return Namespace.Solana;
12
+ return 'Solana';
14
13
  case 'cosmos':
15
- return Namespace.Cosmos;
14
+ return 'Cosmos';
15
+ default:
16
+ throw new Error(
17
+ 'Can not convert this common namespace key to a proper legacy key.'
18
+ );
16
19
  }
17
-
18
- throw new Error(
19
- 'Can not convert this common namespace key to a proper legacy key.'
20
- );
21
20
  });
22
21
  }