@rango-dev/widget-embedded 0.17.1-next.8 → 0.18.0

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 (361) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/dist/QueueManager.d.ts +3 -1
  3. package/dist/QueueManager.d.ts.map +1 -1
  4. package/dist/components/AppRouter.d.ts.map +1 -1
  5. package/dist/components/AppRoutes.d.ts.map +1 -1
  6. package/dist/components/BlockchainsSection/BlockchainsSection.d.ts.map +1 -1
  7. package/dist/components/BlockchainsSection/BlockchainsSection.styles.d.ts +1 -1
  8. package/dist/components/BlockchainsSection/BlockchainsSection.styles.d.ts.map +1 -1
  9. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts +690 -61
  10. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts.map +1 -1
  11. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.d.ts.map +1 -1
  12. package/dist/components/HeaderButtons/HomeButtons.d.ts.map +1 -1
  13. package/dist/components/Layout/Layout.d.ts.map +1 -1
  14. package/dist/components/Layout/Layout.styles.d.ts.map +1 -1
  15. package/dist/components/Layout/Layout.types.d.ts +2 -2
  16. package/dist/components/Layout/Layout.types.d.ts.map +1 -1
  17. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.d.ts.map +1 -1
  18. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.styles.d.ts +1727 -0
  19. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.styles.d.ts.map +1 -1
  20. package/dist/components/NoResult/NoResult.d.ts.map +1 -1
  21. package/dist/components/NotificationContent/NotificationContent.d.ts.map +1 -1
  22. package/dist/components/Quote/Quote.d.ts.map +1 -1
  23. package/dist/components/Quote/Quote.styles.d.ts +793 -5
  24. package/dist/components/Quote/Quote.styles.d.ts.map +1 -1
  25. package/dist/components/Quote/Quote.types.d.ts +0 -1
  26. package/dist/components/Quote/Quote.types.d.ts.map +1 -1
  27. package/dist/components/Quote/QuoteSummary.styles.d.ts +157 -0
  28. package/dist/components/Quote/QuoteSummary.styles.d.ts.map +1 -1
  29. package/dist/components/Quote/index.d.ts +0 -1
  30. package/dist/components/Quote/index.d.ts.map +1 -1
  31. package/dist/components/QuoteSkeleton/QuoteSkeleton.d.ts.map +1 -0
  32. package/dist/components/{Quote → QuoteSkeleton}/QuoteSkeleton.styles.d.ts +314 -0
  33. package/dist/components/QuoteSkeleton/QuoteSkeleton.styles.d.ts.map +1 -0
  34. package/dist/components/QuoteSkeleton/QuoteSkeleton.types.d.ts.map +1 -0
  35. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.d.ts +4 -0
  36. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.d.ts.map +1 -0
  37. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.styles.d.ts +1571 -0
  38. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.styles.d.ts.map +1 -0
  39. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.types.d.ts +6 -0
  40. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.types.d.ts.map +1 -0
  41. package/dist/components/QuoteSkeleton/StepSkeleton.d.ts +4 -0
  42. package/dist/components/QuoteSkeleton/StepSkeleton.d.ts.map +1 -0
  43. package/dist/components/QuoteSkeleton/StepSkeleton.styles.d.ts +786 -0
  44. package/dist/components/QuoteSkeleton/StepSkeleton.styles.d.ts.map +1 -0
  45. package/dist/components/QuoteSkeleton/StepSkeleton.types.d.ts +4 -0
  46. package/dist/components/QuoteSkeleton/StepSkeleton.types.d.ts.map +1 -0
  47. package/dist/components/QuoteSkeleton/index.d.ts +4 -0
  48. package/dist/components/QuoteSkeleton/index.d.ts.map +1 -0
  49. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.d.ts.map +1 -1
  50. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.d.ts.map +1 -1
  51. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts.map +1 -1
  52. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts +1 -0
  53. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts.map +1 -1
  54. package/dist/components/Slippage/Slippage.d.ts.map +1 -1
  55. package/dist/components/Slippage/Slippage.styles.d.ts +158 -0
  56. package/dist/components/Slippage/Slippage.styles.d.ts.map +1 -1
  57. package/dist/components/SwapDetails/SwapDetails.Placeholder.d.ts.map +1 -1
  58. package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
  59. package/dist/components/SwapDetails/SwapDetails.helpers.d.ts +1 -1
  60. package/dist/components/SwapDetails/SwapDetails.helpers.d.ts.map +1 -1
  61. package/dist/components/SwapDetails/SwapDetails.styles.d.ts +628 -0
  62. package/dist/components/SwapDetails/SwapDetails.styles.d.ts.map +1 -1
  63. package/dist/components/SwapDetailsModal/SwapDetailsCompleteModal.d.ts.map +1 -1
  64. package/dist/components/SwapDetailsModal/SwapDetailsModal.WalletState.d.ts.map +1 -1
  65. package/dist/components/SwapDetailsModal/SwapDetailsModal.helpers.d.ts +1 -1
  66. package/dist/components/SwapDetailsModal/SwapDetailsModal.helpers.d.ts.map +1 -1
  67. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts +1 -1
  68. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts.map +1 -1
  69. package/dist/components/SwapsGroup/SwapsGroup.d.ts.map +1 -1
  70. package/dist/components/SwapsGroup/SwapsGroup.styles.d.ts +157 -0
  71. package/dist/components/SwapsGroup/SwapsGroup.styles.d.ts.map +1 -1
  72. package/dist/components/TokenList/TokenList.d.ts.map +1 -1
  73. package/dist/components/TokenList/TokenList.helpers.d.ts +2 -2
  74. package/dist/components/TokenList/TokenList.helpers.d.ts.map +1 -1
  75. package/dist/components/TokenList/TokenList.styles.d.ts +1100 -1
  76. package/dist/components/TokenList/TokenList.styles.d.ts.map +1 -1
  77. package/dist/components/TokenList/TokenList.types.d.ts +4 -9
  78. package/dist/components/TokenList/TokenList.types.d.ts.map +1 -1
  79. package/dist/components/TokenList/index.d.ts +0 -1
  80. package/dist/components/TokenList/index.d.ts.map +1 -1
  81. package/dist/components/UpdateUrl.d.ts.map +1 -1
  82. package/dist/constants/errors.d.ts.map +1 -1
  83. package/dist/constants/index.d.ts +1 -0
  84. package/dist/constants/index.d.ts.map +1 -1
  85. package/dist/constants/navigationRoutes.d.ts +1 -2
  86. package/dist/constants/navigationRoutes.d.ts.map +1 -1
  87. package/dist/constants/searchParams.d.ts +2 -1
  88. package/dist/constants/searchParams.d.ts.map +1 -1
  89. package/dist/containers/App/App.d.ts +3 -0
  90. package/dist/containers/App/App.d.ts.map +1 -0
  91. package/dist/containers/App/App.styles.d.ts +158 -0
  92. package/dist/containers/App/App.styles.d.ts.map +1 -0
  93. package/dist/containers/App/index.d.ts +2 -0
  94. package/dist/containers/App/index.d.ts.map +1 -0
  95. package/dist/containers/QuoteInfo/QuoteInfo.d.ts.map +1 -1
  96. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts +316 -0
  97. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts.map +1 -1
  98. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts +3 -0
  99. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts.map +1 -1
  100. package/dist/containers/Wallets/Wallets.d.ts +6 -0
  101. package/dist/containers/Wallets/Wallets.d.ts.map +1 -0
  102. package/dist/containers/Wallets/Wallets.types.d.ts +11 -0
  103. package/dist/containers/Wallets/Wallets.types.d.ts.map +1 -0
  104. package/dist/containers/Wallets/index.d.ts +2 -0
  105. package/dist/containers/Wallets/index.d.ts.map +1 -0
  106. package/dist/containers/Widget/Widget.d.ts +5 -0
  107. package/dist/containers/Widget/Widget.d.ts.map +1 -0
  108. package/dist/containers/Widget/Widget.types.d.ts +5 -0
  109. package/dist/containers/Widget/Widget.types.d.ts.map +1 -0
  110. package/dist/containers/Widget/index.d.ts +3 -0
  111. package/dist/containers/Widget/index.d.ts.map +1 -0
  112. package/dist/containers/WidgetInfo/WidgetInfo.d.ts +6 -0
  113. package/dist/containers/WidgetInfo/WidgetInfo.d.ts.map +1 -0
  114. package/dist/containers/WidgetInfo/WidgetInfo.helpers.d.ts +20 -0
  115. package/dist/containers/WidgetInfo/WidgetInfo.helpers.d.ts.map +1 -0
  116. package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts +21 -0
  117. package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts.map +1 -0
  118. package/dist/containers/WidgetInfo/index.d.ts +2 -0
  119. package/dist/containers/WidgetInfo/index.d.ts.map +1 -0
  120. package/dist/containers/WidgetProvider/WidgetProvider.d.ts +5 -0
  121. package/dist/containers/WidgetProvider/WidgetProvider.d.ts.map +1 -0
  122. package/dist/containers/WidgetProvider/WidgetProvider.types.d.ts +7 -0
  123. package/dist/containers/WidgetProvider/WidgetProvider.types.d.ts.map +1 -0
  124. package/dist/containers/WidgetProvider/index.d.ts +2 -0
  125. package/dist/containers/WidgetProvider/index.d.ts.map +1 -0
  126. package/dist/hooks/useConfirmSwap/useConfirmSwap.d.ts.map +1 -1
  127. package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts +6 -3
  128. package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts.map +1 -1
  129. package/dist/hooks/useConfirmSwap/useConfirmSwap.types.d.ts +1 -1
  130. package/dist/hooks/useConfirmSwap/useConfirmSwap.types.d.ts.map +1 -1
  131. package/dist/hooks/useForceAutoConnect.d.ts +2 -0
  132. package/dist/hooks/useForceAutoConnect.d.ts.map +1 -0
  133. package/dist/hooks/useLanguage.d.ts +1 -1
  134. package/dist/hooks/useLanguage.d.ts.map +1 -1
  135. package/dist/hooks/useNavigateBack.d.ts +1 -3
  136. package/dist/hooks/useNavigateBack.d.ts.map +1 -1
  137. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.constants.d.ts +1 -1
  138. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.d.ts +2 -2
  139. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.d.ts.map +1 -1
  140. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts +3 -5
  141. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts.map +1 -1
  142. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.d.ts +1 -0
  143. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.d.ts.map +1 -1
  144. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.d.ts +5 -1
  145. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.d.ts.map +1 -1
  146. package/dist/hooks/useSwapInput.d.ts.map +1 -1
  147. package/dist/hooks/useSyncStoresWithConfig.d.ts.map +1 -1
  148. package/dist/hooks/useTheme.d.ts +1 -1
  149. package/dist/hooks/useTheme.d.ts.map +1 -1
  150. package/dist/index.d.ts +20 -8
  151. package/dist/index.d.ts.map +1 -1
  152. package/dist/index.js +1 -1
  153. package/dist/index.js.map +4 -4
  154. package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
  155. package/dist/pages/HistoryPage.d.ts.map +1 -1
  156. package/dist/pages/Home.d.ts.map +1 -1
  157. package/dist/pages/LanguagePage.d.ts.map +1 -1
  158. package/dist/pages/LiquiditySourcePage.d.ts.map +1 -1
  159. package/dist/pages/SelectBlockchainPage.d.ts.map +1 -1
  160. package/dist/pages/SelectSwapItemsPage.d.ts.map +1 -1
  161. package/dist/pages/SettingsPage.d.ts.map +1 -1
  162. package/dist/pages/SwapDetailsPage.d.ts.map +1 -1
  163. package/dist/pages/ThemePage.d.ts.map +1 -1
  164. package/dist/pages/WalletsPage.d.ts.map +1 -1
  165. package/dist/store/AppStore.d.ts +37 -1
  166. package/dist/store/AppStore.d.ts.map +1 -1
  167. package/dist/store/app.d.ts +39 -2
  168. package/dist/store/app.d.ts.map +1 -1
  169. package/dist/store/notification.d.ts +4 -3
  170. package/dist/store/notification.d.ts.map +1 -1
  171. package/dist/store/quote.d.ts +9 -9
  172. package/dist/store/quote.d.ts.map +1 -1
  173. package/dist/store/slices/config.d.ts.map +1 -1
  174. package/dist/store/slices/data.d.ts +2 -2
  175. package/dist/store/slices/data.d.ts.map +1 -1
  176. package/dist/store/slices/settings.d.ts +39 -0
  177. package/dist/store/slices/settings.d.ts.map +1 -0
  178. package/dist/store/ui.d.ts +2 -1
  179. package/dist/store/ui.d.ts.map +1 -1
  180. package/dist/store/wallets.d.ts +9 -5
  181. package/dist/store/wallets.d.ts.map +1 -1
  182. package/dist/types/config.d.ts +36 -3
  183. package/dist/types/config.d.ts.map +1 -1
  184. package/dist/types/swap.d.ts +4 -14
  185. package/dist/types/swap.d.ts.map +1 -1
  186. package/dist/types/wallets.d.ts +15 -1
  187. package/dist/types/wallets.d.ts.map +1 -1
  188. package/dist/utils/colors.d.ts.map +1 -1
  189. package/dist/utils/configs.d.ts +1 -0
  190. package/dist/utils/configs.d.ts.map +1 -1
  191. package/dist/utils/meta.d.ts +2 -1
  192. package/dist/utils/meta.d.ts.map +1 -1
  193. package/dist/utils/providers.d.ts +2 -2
  194. package/dist/utils/providers.d.ts.map +1 -1
  195. package/dist/utils/queue.d.ts +2 -2
  196. package/dist/utils/queue.d.ts.map +1 -1
  197. package/dist/utils/quote.d.ts +1 -1
  198. package/dist/utils/quote.d.ts.map +1 -1
  199. package/dist/utils/settings.d.ts +4 -1
  200. package/dist/utils/settings.d.ts.map +1 -1
  201. package/dist/utils/swap.d.ts +13 -5
  202. package/dist/utils/swap.d.ts.map +1 -1
  203. package/dist/utils/time.d.ts +1 -1
  204. package/dist/utils/time.d.ts.map +1 -1
  205. package/dist/utils/wallets.d.ts +7 -8
  206. package/dist/utils/wallets.d.ts.map +1 -1
  207. package/package.json +12 -10
  208. package/src/QueueManager.tsx +4 -3
  209. package/src/components/AppRouter.tsx +5 -27
  210. package/src/components/AppRoutes.tsx +54 -33
  211. package/src/components/BlockchainList/BlockchainList.styles.ts +2 -2
  212. package/src/components/BlockchainsSection/BlockchainsSection.styles.ts +1 -1
  213. package/src/components/BlockchainsSection/BlockchainsSection.tsx +19 -10
  214. package/src/components/ConfirmWalletsModal/ConfirmWallets.styles.ts +29 -10
  215. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.tsx +15 -7
  216. package/src/components/ConfirmWalletsModal/WalletList.tsx +3 -3
  217. package/src/components/HeaderButtons/HomeButtons.tsx +28 -18
  218. package/src/components/Layout/Layout.styles.ts +2 -0
  219. package/src/components/Layout/Layout.tsx +20 -7
  220. package/src/components/Layout/Layout.types.ts +2 -2
  221. package/src/components/LoadingSwapDetails/LoadingSwapDetails.styles.ts +65 -61
  222. package/src/components/LoadingSwapDetails/LoadingSwapDetails.tsx +28 -34
  223. package/src/components/NoResult/NoResult.helpers.ts +12 -12
  224. package/src/components/NoResult/NoResult.tsx +2 -5
  225. package/src/components/NotificationContent/NotificationContent.tsx +2 -1
  226. package/src/components/Quote/Quote.styles.ts +49 -12
  227. package/src/components/Quote/Quote.tsx +107 -38
  228. package/src/components/Quote/Quote.types.ts +0 -1
  229. package/src/components/Quote/QuoteSummary.styles.ts +9 -8
  230. package/src/components/Quote/QuoteSummary.tsx +2 -2
  231. package/src/components/Quote/index.ts +0 -1
  232. package/src/components/QuoteSkeleton/QuoteSkeleton.styles.ts +42 -0
  233. package/src/components/QuoteSkeleton/QuoteSkeleton.tsx +30 -0
  234. package/src/components/QuoteSkeleton/QuoteSummarySkeleton.styles.ts +57 -0
  235. package/src/components/QuoteSkeleton/QuoteSummarySkeleton.tsx +76 -0
  236. package/src/components/QuoteSkeleton/QuoteSummarySkeleton.types.ts +6 -0
  237. package/src/components/QuoteSkeleton/StepSkeleton.styles.ts +33 -0
  238. package/src/components/QuoteSkeleton/StepSkeleton.tsx +44 -0
  239. package/src/components/QuoteSkeleton/StepSkeleton.types.ts +1 -0
  240. package/src/components/QuoteSkeleton/index.ts +3 -0
  241. package/src/components/QuoteWarningsAndErrors/QuoteErrorsModalItem.tsx +1 -1
  242. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.ts +11 -4
  243. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.ts +8 -1
  244. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.tsx +13 -13
  245. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.ts +1 -0
  246. package/src/components/QuoteWarningsAndErrors/SlippageWariningModal.tsx +3 -3
  247. package/src/components/Slippage/Slippage.styles.ts +15 -5
  248. package/src/components/Slippage/Slippage.tsx +11 -10
  249. package/src/components/SwapDetails/SwapDetails.Placeholder.tsx +5 -8
  250. package/src/components/SwapDetails/SwapDetails.helpers.tsx +1 -1
  251. package/src/components/SwapDetails/SwapDetails.styles.ts +36 -33
  252. package/src/components/SwapDetails/SwapDetails.tsx +28 -39
  253. package/src/components/SwapDetailsAlerts/SwapDetailsAlerts.Warning.tsx +1 -1
  254. package/src/components/SwapDetailsModal/SwapDetailsCompleteModal.tsx +4 -3
  255. package/src/components/SwapDetailsModal/SwapDetailsModal.Cancel.tsx +2 -2
  256. package/src/components/SwapDetailsModal/SwapDetailsModal.WalletState.tsx +14 -8
  257. package/src/components/SwapDetailsModal/SwapDetailsModal.helpers.tsx +1 -1
  258. package/src/components/SwapDetailsModal/SwapDetailsModal.tsx +1 -1
  259. package/src/components/SwapDetailsModal/SwapDetailsModal.types.ts +1 -1
  260. package/src/components/SwapsGroup/SwapsGroup.styles.ts +10 -1
  261. package/src/components/SwapsGroup/SwapsGroup.tsx +3 -5
  262. package/src/components/TokenList/TokenList.helpers.ts +2 -2
  263. package/src/components/TokenList/TokenList.styles.ts +74 -38
  264. package/src/components/TokenList/TokenList.tsx +30 -20
  265. package/src/components/TokenList/TokenList.types.ts +4 -10
  266. package/src/components/TokenList/index.ts +0 -1
  267. package/src/components/UpdateUrl.tsx +4 -5
  268. package/src/constants/errors.ts +9 -5
  269. package/src/constants/index.ts +1 -0
  270. package/src/constants/navigationRoutes.ts +7 -8
  271. package/src/constants/searchParams.ts +1 -0
  272. package/src/containers/App/App.styles.ts +18 -0
  273. package/src/containers/App/App.tsx +52 -0
  274. package/src/containers/App/index.ts +1 -0
  275. package/src/containers/QuoteInfo/QuoteInfo.styles.ts +17 -1
  276. package/src/containers/QuoteInfo/QuoteInfo.tsx +46 -44
  277. package/src/containers/QuoteInfo/QuoteInfo.types.ts +3 -0
  278. package/src/{Wallets.tsx → containers/Wallets/Wallets.tsx} +25 -31
  279. package/src/containers/Wallets/Wallets.types.ts +12 -0
  280. package/src/containers/Wallets/index.ts +1 -0
  281. package/src/containers/Widget/Widget.tsx +19 -0
  282. package/src/containers/Widget/Widget.types.ts +5 -0
  283. package/src/containers/Widget/index.ts +2 -0
  284. package/src/containers/WidgetInfo/WidgetInfo.helpers.ts +64 -0
  285. package/src/containers/WidgetInfo/WidgetInfo.tsx +62 -0
  286. package/src/containers/WidgetInfo/WidgetInfo.types.ts +21 -0
  287. package/src/containers/WidgetInfo/index.ts +1 -0
  288. package/src/containers/WidgetProvider/WidgetProvider.tsx +28 -0
  289. package/src/containers/WidgetProvider/WidgetProvider.types.ts +7 -0
  290. package/src/containers/WidgetProvider/index.ts +1 -0
  291. package/src/hooks/useConfirmSwap/useConfirmSwap.helpers.ts +15 -11
  292. package/src/hooks/useConfirmSwap/useConfirmSwap.ts +21 -20
  293. package/src/hooks/useConfirmSwap/useConfirmSwap.types.ts +1 -1
  294. package/src/hooks/useForceAutoConnect.ts +27 -0
  295. package/src/hooks/useLanguage.ts +4 -5
  296. package/src/hooks/useNavigateBack.ts +3 -52
  297. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.constants.ts +1 -1
  298. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.ts +37 -7
  299. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.ts +60 -0
  300. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.test.ts +78 -3
  301. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.ts +15 -6
  302. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.ts +6 -1
  303. package/src/hooks/useSwapInput.ts +86 -28
  304. package/src/hooks/useSyncStoresWithConfig.ts +18 -5
  305. package/src/hooks/useTheme.ts +4 -5
  306. package/src/index.ts +53 -5
  307. package/src/pages/ConfirmSwapPage.tsx +61 -33
  308. package/src/pages/HistoryPage.tsx +2 -7
  309. package/src/pages/Home.tsx +55 -81
  310. package/src/pages/LanguagePage.tsx +0 -5
  311. package/src/pages/LiquiditySourcePage.tsx +3 -7
  312. package/src/pages/SelectBlockchainPage.tsx +26 -18
  313. package/src/pages/SelectSwapItemsPage.tsx +13 -26
  314. package/src/pages/SettingsPage.tsx +26 -17
  315. package/src/pages/SwapDetailsPage.tsx +3 -4
  316. package/src/pages/ThemePage.tsx +2 -7
  317. package/src/pages/WalletsPage.tsx +5 -8
  318. package/src/services/httpService.ts +1 -1
  319. package/src/store/AppStore.tsx +7 -1
  320. package/src/store/app.ts +31 -5
  321. package/src/store/quote.ts +3 -4
  322. package/src/store/slices/config.ts +1 -0
  323. package/src/store/slices/data.ts +10 -6
  324. package/src/store/slices/settings.ts +168 -0
  325. package/src/store/wallets.ts +57 -29
  326. package/src/types/config.ts +48 -3
  327. package/src/types/swap.ts +4 -13
  328. package/src/types/wallets.ts +18 -1
  329. package/src/utils/colors.ts +2 -1
  330. package/src/utils/configs.ts +2 -1
  331. package/src/utils/date.ts +1 -1
  332. package/src/utils/meta.ts +8 -1
  333. package/src/utils/providers.ts +8 -5
  334. package/src/utils/queue.ts +2 -2
  335. package/src/utils/quote.ts +7 -7
  336. package/src/utils/settings.ts +11 -5
  337. package/src/utils/swap.ts +46 -40
  338. package/src/utils/time.ts +1 -1
  339. package/src/utils/wallets.ts +127 -144
  340. package/dist/Wallets.d.ts +0 -18
  341. package/dist/Wallets.d.ts.map +0 -1
  342. package/dist/Widget.d.ts +0 -9
  343. package/dist/Widget.d.ts.map +0 -1
  344. package/dist/components/LoadingSwapDetails/LoadingSwapDetailStep.d.ts +0 -4
  345. package/dist/components/LoadingSwapDetails/LoadingSwapDetailStep.d.ts.map +0 -1
  346. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.types.d.ts +0 -4
  347. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.types.d.ts.map +0 -1
  348. package/dist/components/Quote/QuoteSkeleton.d.ts.map +0 -1
  349. package/dist/components/Quote/QuoteSkeleton.styles.d.ts.map +0 -1
  350. package/dist/components/Quote/QuoteSkeleton.types.d.ts.map +0 -1
  351. package/dist/store/settings.d.ts +0 -82
  352. package/dist/store/settings.d.ts.map +0 -1
  353. package/src/Widget.tsx +0 -106
  354. package/src/components/LoadingSwapDetails/LoadingSwapDetailStep.tsx +0 -41
  355. package/src/components/LoadingSwapDetails/LoadingSwapDetails.types.ts +0 -3
  356. package/src/components/Quote/QuoteSkeleton.styles.ts +0 -110
  357. package/src/components/Quote/QuoteSkeleton.tsx +0 -108
  358. package/src/store/settings.ts +0 -161
  359. /package/dist/components/{Quote → QuoteSkeleton}/QuoteSkeleton.d.ts +0 -0
  360. /package/dist/components/{Quote → QuoteSkeleton}/QuoteSkeleton.types.d.ts +0 -0
  361. /package/src/components/{Quote → QuoteSkeleton}/QuoteSkeleton.types.ts +0 -0
@@ -3,18 +3,17 @@ import type { PropTypes } from './QuoteInfo.types';
3
3
  import { Divider } from '@rango-dev/ui';
4
4
  import React from 'react';
5
5
 
6
- import { Quote, QuoteSkeleton } from '../../components/Quote';
6
+ import { Quote } from '../../components/Quote';
7
+ import { QuoteSkeleton } from '../../components/QuoteSkeleton';
7
8
  import { QuoteWarningsAndErrors } from '../../components/QuoteWarningsAndErrors';
8
- import {
9
- TOKEN_AMOUNT_MAX_DECIMALS,
10
- TOKEN_AMOUNT_MIN_DECIMALS,
11
- USD_VALUE_MAX_DECIMALS,
12
- USD_VALUE_MIN_DECIMALS,
13
- } from '../../constants/routing';
14
9
  import { useQuoteStore } from '../../store/quote';
15
- import { numberToString } from '../../utils/numbers';
10
+ import { QuoteErrorType } from '../../types';
16
11
 
17
- import { QuoteContainer } from './QuoteInfo.styles';
12
+ import {
13
+ PositionTopAlerts,
14
+ QuoteContainer,
15
+ SkeletonContainer,
16
+ } from './QuoteInfo.styles';
18
17
 
19
18
  export function QuoteInfo(props: PropTypes) {
20
19
  const {
@@ -28,19 +27,46 @@ export function QuoteInfo(props: PropTypes) {
28
27
  onOpenWarningModal,
29
28
  onCloseWarningModal,
30
29
  onConfirmWarningModal,
30
+ onChangeSettings,
31
31
  expanded = false,
32
+ alertPosition = 'bottom',
32
33
  } = props;
33
34
  const { inputAmount, inputUsdValue, outputUsdValue, outputAmount } =
34
35
  useQuoteStore();
35
36
 
36
- const showQuote = quote && quote.result && !loading;
37
+ const noResult =
38
+ error &&
39
+ (error.type === QuoteErrorType.NO_RESULT ||
40
+ error.type === QuoteErrorType.REQUEST_FAILED);
41
+
42
+ const showQuote = !noResult && quote && quote.result && !loading;
43
+
44
+ const quoteWarningsAndErrors = (warning || error) && (
45
+ <QuoteWarningsAndErrors
46
+ warning={warning}
47
+ error={error}
48
+ loading={loading}
49
+ refetchQuote={refetchQuote}
50
+ showWarningModal={showWarningModal}
51
+ onOpenWarningModal={onOpenWarningModal}
52
+ onCloseWarningModal={onCloseWarningModal}
53
+ onConfirmWarningModal={onConfirmWarningModal}
54
+ onChangeSettings={onChangeSettings}
55
+ />
56
+ );
37
57
  return (
38
58
  <>
39
59
  {loading && (
40
60
  <QuoteContainer>
41
- <QuoteSkeleton type={type} expanded={expanded} />
61
+ <SkeletonContainer paddingTop={alertPosition === 'top'}>
62
+ <QuoteSkeleton type={type} expanded={expanded} />
63
+ </SkeletonContainer>
42
64
  </QuoteContainer>
43
65
  )}
66
+
67
+ {alertPosition === 'top' && (
68
+ <PositionTopAlerts>{quoteWarningsAndErrors}</PositionTopAlerts>
69
+ )}
44
70
  {showQuote ? (
45
71
  <QuoteContainer>
46
72
  <Quote
@@ -51,46 +77,22 @@ export function QuoteInfo(props: PropTypes) {
51
77
  expanded={expanded}
52
78
  recommended={true}
53
79
  input={{
54
- value: numberToString(
55
- inputAmount,
56
- TOKEN_AMOUNT_MIN_DECIMALS,
57
- TOKEN_AMOUNT_MAX_DECIMALS
58
- ),
59
- usdValue: numberToString(
60
- inputUsdValue,
61
- USD_VALUE_MIN_DECIMALS,
62
- USD_VALUE_MAX_DECIMALS
63
- ),
80
+ value: inputAmount,
81
+ usdValue: inputUsdValue?.toString() ?? '',
64
82
  }}
65
83
  output={{
66
- value: numberToString(
67
- outputAmount,
68
- TOKEN_AMOUNT_MIN_DECIMALS,
69
- TOKEN_AMOUNT_MAX_DECIMALS
70
- ),
71
- usdValue: numberToString(
72
- outputUsdValue,
73
- USD_VALUE_MIN_DECIMALS,
74
- USD_VALUE_MAX_DECIMALS
75
- ),
84
+ value: outputAmount?.toString() ?? '',
85
+ usdValue: outputUsdValue?.toString() ?? '',
76
86
  }}
77
87
  />
78
88
  </QuoteContainer>
79
89
  ) : null}
80
90
 
81
- {!warning && !error && <Divider size={16} />}
82
-
83
- {(warning || error) && (
84
- <QuoteWarningsAndErrors
85
- warning={warning}
86
- error={error}
87
- loading={loading}
88
- refetchQuote={refetchQuote}
89
- showWarningModal={showWarningModal}
90
- onOpenWarningModal={onOpenWarningModal}
91
- onCloseWarningModal={onCloseWarningModal}
92
- onConfirmWarningModal={onConfirmWarningModal}
93
- />
91
+ {alertPosition === 'bottom' && (
92
+ <>
93
+ {!warning && !error && <Divider size={16} />}
94
+ {quoteWarningsAndErrors}
95
+ </>
94
96
  )}
95
97
  </>
96
98
  );
@@ -8,10 +8,13 @@ export type PropTypes = {
8
8
  loading: boolean;
9
9
  error: QuoteError | null;
10
10
  warning: QuoteWarning | null;
11
+ autoScrollOnExpanding?: boolean;
11
12
  expanded?: boolean;
13
+ alertPosition?: 'top' | 'bottom';
12
14
  refetchQuote: () => void;
13
15
  showWarningModal: boolean;
14
16
  onOpenWarningModal: () => void;
15
17
  onCloseWarningModal: () => void;
16
18
  onConfirmWarningModal: () => void;
19
+ onChangeSettings: () => void;
17
20
  };
@@ -1,5 +1,9 @@
1
- import type { WidgetConfig } from './types';
2
- import type { ProvidersOptions } from './utils/providers';
1
+ import type {
2
+ OnConnectHandler,
3
+ PropTypes,
4
+ WidgetContextInterface,
5
+ } from './Wallets.types';
6
+ import type { ProvidersOptions } from '../../utils/providers';
3
7
  import type { EventHandler } from '@rango-dev/wallets-react';
4
8
  import type { Network } from '@rango-dev/wallets-shared';
5
9
  import type { PropsWithChildren } from 'react';
@@ -8,18 +12,14 @@ import { Events, Provider } from '@rango-dev/wallets-react';
8
12
  import { isEvmBlockchain } from 'rango-sdk';
9
13
  import React, { createContext, useEffect, useRef } from 'react';
10
14
 
11
- import { useWalletProviders } from './hooks/useWalletProviders';
12
- import { AppStoreProvider, useAppStore } from './store/AppStore';
13
- import { useWalletsStore } from './store/wallets';
15
+ import { useSyncStoresWithConfig } from '../../hooks/useSyncStoresWithConfig';
16
+ import { useWalletProviders } from '../../hooks/useWalletProviders';
17
+ import { AppStoreProvider, useAppStore } from '../../store/AppStore';
18
+ import { useWalletsStore } from '../../store/wallets';
14
19
  import {
15
20
  prepareAccountsForWalletStore,
16
21
  walletAndSupportedChainsNames,
17
- } from './utils/wallets';
18
-
19
- type OnConnectHandler = (key: string) => void;
20
- interface WidgetContextInterface {
21
- onConnectWallet(handler: OnConnectHandler): void;
22
- }
22
+ } from '../../utils/wallets';
23
23
 
24
24
  export const WidgetContext = createContext<WidgetContextInterface>({
25
25
  onConnectWallet: () => {
@@ -27,25 +27,26 @@ export const WidgetContext = createContext<WidgetContextInterface>({
27
27
  },
28
28
  });
29
29
 
30
- function Main(
31
- props: PropsWithChildren<{
32
- providers: WidgetConfig['wallets'];
33
- options?: ProvidersOptions;
34
- onUpdateState?: EventHandler;
35
- config: WidgetConfig;
36
- }>
37
- ) {
38
- const updateConfig = useAppStore().updateConfig;
30
+ function Main(props: PropsWithChildren<PropTypes>) {
31
+ const { updateConfig, updateSettings, fetch: fetchMeta } = useAppStore();
39
32
  const blockchains = useAppStore().blockchains();
40
33
  const tokens = useAppStore().tokens();
41
- const { providers } = useWalletProviders(props.providers, props?.options);
42
- const disconnectWallet = useWalletsStore.use.disconnectWallet();
43
- const connectWallet = useWalletsStore.use.connectWallet();
34
+ const walletOptions: ProvidersOptions = {
35
+ walletConnectProjectId: props.config?.walletConnectProjectId,
36
+ };
37
+ const { providers } = useWalletProviders(props.config.wallets, walletOptions);
38
+ const { connectWallet, disconnectWallet } = useWalletsStore();
44
39
  const onConnectWalletHandler = useRef<OnConnectHandler>();
40
+ useSyncStoresWithConfig();
41
+
42
+ useEffect(() => {
43
+ void fetchMeta().catch(console.log);
44
+ }, []);
45
45
 
46
46
  useEffect(() => {
47
47
  if (props.config) {
48
48
  updateConfig(props.config);
49
+ updateSettings(props.config);
49
50
  }
50
51
  }, [props.config]);
51
52
 
@@ -117,14 +118,7 @@ function Main(
117
118
  );
118
119
  }
119
120
 
120
- export function WidgetWallets(
121
- props: PropsWithChildren<{
122
- providers: WidgetConfig['wallets'];
123
- options?: ProvidersOptions;
124
- onUpdateState?: EventHandler;
125
- config: WidgetConfig;
126
- }>
127
- ) {
121
+ export function WidgetWallets(props: PropsWithChildren<PropTypes>) {
128
122
  const { config, ...otherProps } = props;
129
123
  return (
130
124
  <AppStoreProvider config={config}>
@@ -0,0 +1,12 @@
1
+ import type { WidgetConfig } from '../../types';
2
+ import type { EventHandler } from '@rango-dev/wallets-react';
3
+
4
+ export type OnConnectHandler = (key: string) => void;
5
+ export interface WidgetContextInterface {
6
+ onConnectWallet(handler: OnConnectHandler): void;
7
+ }
8
+
9
+ export interface PropTypes {
10
+ onUpdateState?: EventHandler;
11
+ config: WidgetConfig;
12
+ }
@@ -0,0 +1 @@
1
+ export { WidgetWallets, WidgetContext } from './Wallets';
@@ -0,0 +1,19 @@
1
+ import type { WidgetProps } from './Widget.types';
2
+ import type { PropsWithChildren } from 'react';
3
+
4
+ import React from 'react';
5
+
6
+ import { DEFAULT_CONFIG } from '../../store/slices/config';
7
+ import { Main } from '../App';
8
+ import { WidgetProvider } from '../WidgetProvider';
9
+
10
+ export function Widget(props: PropsWithChildren<WidgetProps>) {
11
+ if (!props.config?.externalWallets) {
12
+ return (
13
+ <WidgetProvider config={props.config ?? DEFAULT_CONFIG}>
14
+ <Main />
15
+ </WidgetProvider>
16
+ );
17
+ }
18
+ return <Main />;
19
+ }
@@ -0,0 +1,5 @@
1
+ import type { WidgetConfig } from '../../types';
2
+
3
+ export type WidgetProps = {
4
+ config?: WidgetConfig;
5
+ };
@@ -0,0 +1,2 @@
1
+ export { Widget } from './Widget';
2
+ export type { WidgetProps } from './Widget.types';
@@ -0,0 +1,64 @@
1
+ import type { Meta } from '../../store/quote';
2
+ import type { Manager } from '@rango-dev/queue-manager-core';
3
+ import type { PendingSwap } from 'rango-types/lib';
4
+
5
+ import {
6
+ cancelSwap,
7
+ getCurrentBlockchainOfOrNull,
8
+ getCurrentStep,
9
+ getRelatedWalletOrNull,
10
+ } from '@rango-dev/queue-manager-rango-preset';
11
+
12
+ import { getPendingSwaps } from '../../utils/queue';
13
+
14
+ interface WidgetHistoryActions {
15
+ retrySwap: (pendingSwap: PendingSwap, meta: Meta) => void;
16
+ }
17
+
18
+ export class WidgetHistory {
19
+ private manager: Manager | undefined;
20
+ private actions: WidgetHistoryActions;
21
+
22
+ constructor(manager: Manager | undefined, actions: WidgetHistoryActions) {
23
+ this.manager = manager;
24
+ this.actions = actions;
25
+ }
26
+
27
+ public getAllSwaps() {
28
+ return getPendingSwaps(this.manager);
29
+ }
30
+
31
+ public getCurrentStep(swap: PendingSwap) {
32
+ return this.getCurrentStepInfo(swap).step;
33
+ }
34
+
35
+ public getCurrentStepWallet(swap: PendingSwap) {
36
+ return this.getCurrentStepInfo(swap).wallet;
37
+ }
38
+
39
+ public getCurrentStepNetwork(swap: PendingSwap) {
40
+ return this.getCurrentStepInfo(swap).network;
41
+ }
42
+
43
+ public retry(swap: PendingSwap, meta: Meta) {
44
+ return this.actions.retrySwap(swap, meta);
45
+ }
46
+
47
+ public cancel(id: string) {
48
+ const queue = this.manager?.get(id);
49
+ if (queue) {
50
+ cancelSwap(queue);
51
+ }
52
+ }
53
+
54
+ private getCurrentStepInfo(swap: PendingSwap) {
55
+ const currentStep = getCurrentStep(swap);
56
+ return {
57
+ step: currentStep,
58
+ wallet: currentStep ? getRelatedWalletOrNull(swap, currentStep) : null,
59
+ network: currentStep
60
+ ? getCurrentBlockchainOfOrNull(swap, currentStep)
61
+ : null,
62
+ };
63
+ }
64
+ }
@@ -0,0 +1,62 @@
1
+ import type { WidgetInfoContextInterface } from './WidgetInfo.types';
2
+
3
+ import { useManager } from '@rango-dev/queue-manager-react';
4
+ import React, { createContext, useContext } from 'react';
5
+
6
+ import { useAppStore } from '../../store/AppStore';
7
+ import { useQuoteStore } from '../../store/quote';
8
+ import { useWalletsStore } from '../../store/wallets';
9
+ import { calculateWalletUsdValue } from '../../utils/wallets';
10
+
11
+ import { WidgetHistory } from './WidgetInfo.helpers';
12
+
13
+ export const WidgetInfoContext = createContext<
14
+ WidgetInfoContextInterface | undefined
15
+ >(undefined);
16
+
17
+ export function WidgetInfo(props: React.PropsWithChildren) {
18
+ const { manager } = useManager();
19
+ const retrySwap = useQuoteStore.use.retry();
20
+ const history = new WidgetHistory(manager, { retrySwap });
21
+ const details = useWalletsStore.use.connectedWallets();
22
+ const isLoading = useWalletsStore.use.loading();
23
+ const totalBalance = calculateWalletUsdValue(details);
24
+ const refetch = useWalletsStore.use.getWalletsDetails();
25
+ const blockchains = useAppStore().blockchains();
26
+ const tokens = useAppStore().tokens();
27
+ const swappers = useAppStore().swappers();
28
+ const loadingStatus = useAppStore().fetchStatus;
29
+
30
+ // eslint-disable-next-line react/jsx-no-constructed-context-values
31
+ const value = {
32
+ history,
33
+ wallets: {
34
+ isLoading,
35
+ details,
36
+ totalBalance,
37
+ refetch,
38
+ },
39
+ meta: {
40
+ blockchains,
41
+ tokens,
42
+ swappers,
43
+ loadingStatus,
44
+ },
45
+ };
46
+
47
+ return (
48
+ <WidgetInfoContext.Provider value={value}>
49
+ {props.children}
50
+ </WidgetInfoContext.Provider>
51
+ );
52
+ }
53
+
54
+ export function useWidget(): WidgetInfoContextInterface {
55
+ const context = useContext(WidgetInfoContext);
56
+ if (!context) {
57
+ throw new Error(
58
+ 'useWidget can only be used within the WidgetProvider component'
59
+ );
60
+ }
61
+ return context;
62
+ }
@@ -0,0 +1,21 @@
1
+ import type { WidgetHistory } from './WidgetInfo.helpers';
2
+ import type { FetchStatus } from '../../store/slices/data';
3
+ import type { ConnectedWallet } from '../../store/wallets';
4
+ import type { Wallet } from '../../types';
5
+ import type { BlockchainMeta, SwapperMeta, Token } from 'rango-sdk';
6
+
7
+ export interface WidgetInfoContextInterface {
8
+ history: WidgetHistory;
9
+ wallets: {
10
+ details: ConnectedWallet[];
11
+ totalBalance: string;
12
+ isLoading: boolean;
13
+ refetch: (accounts: Wallet[], tokens: Token[]) => void;
14
+ };
15
+ meta: {
16
+ blockchains: BlockchainMeta[];
17
+ tokens: Token[];
18
+ swappers: SwapperMeta[];
19
+ loadingStatus: FetchStatus;
20
+ };
21
+ }
@@ -0,0 +1 @@
1
+ export { WidgetInfo, useWidget } from './WidgetInfo';
@@ -0,0 +1,28 @@
1
+ import type { PropTypes } from './WidgetProvider.types';
2
+ import type { PropsWithChildren } from 'react';
3
+
4
+ import React, { useMemo } from 'react';
5
+
6
+ import { DEFAULT_BASE_URL, RANGO_PUBLIC_API_KEY } from '../../constants';
7
+ import QueueManager from '../../QueueManager';
8
+ import { initConfig } from '../../utils/configs';
9
+ import { WidgetWallets } from '../Wallets';
10
+ import { WidgetInfo } from '../WidgetInfo';
11
+
12
+ export function WidgetProvider(props: PropsWithChildren<PropTypes>) {
13
+ const { onUpdateState, config } = props;
14
+
15
+ useMemo(() => {
16
+ initConfig({
17
+ API_KEY: config?.apiKey || RANGO_PUBLIC_API_KEY,
18
+ BASE_URL: config?.apiUrl || DEFAULT_BASE_URL,
19
+ });
20
+ }, [config]);
21
+ return (
22
+ <WidgetWallets config={config} onUpdateState={onUpdateState}>
23
+ <QueueManager apiKey={config.apiKey}>
24
+ <WidgetInfo>{props.children}</WidgetInfo>
25
+ </QueueManager>
26
+ </WidgetWallets>
27
+ );
28
+ }
@@ -0,0 +1,7 @@
1
+ import type { WidgetConfig } from '../../types';
2
+ import type { EventHandler } from '@rango-dev/wallets-react';
3
+
4
+ export type PropTypes = {
5
+ onUpdateState?: EventHandler;
6
+ config: WidgetConfig;
7
+ };
@@ -0,0 +1 @@
1
+ export { WidgetProvider } from './WidgetProvider';
@@ -1,12 +1,13 @@
1
1
  import type { ConfirmSwapFetchResult } from './useConfirmSwap.types';
2
2
  import type { ConfirmSwapWarnings, Wallet } from '../../types';
3
- import type { BestRouteResponse, Token } from 'rango-sdk';
3
+ import type { BestRouteResponse, BlockchainMeta, Token } from 'rango-sdk';
4
4
 
5
5
  import { errorMessages } from '../../constants/errors';
6
6
  import { QuoteErrorType, QuoteUpdateType } from '../../types';
7
7
  import { numberToString } from '../../utils/numbers';
8
8
  import {
9
9
  generateQuoteWarnings,
10
+ getPriceImpact,
10
11
  isNumberOfSwapsChanged,
11
12
  isQuoteChanged,
12
13
  isQuoteInternalCoinsUpdated,
@@ -14,10 +15,9 @@ import {
14
15
  } from '../../utils/quote';
15
16
  import {
16
17
  checkSlippageErrors,
17
- getBalanceWarnings,
18
+ generateBalanceWarnings,
18
19
  getLimitErrorMessage,
19
20
  getMinRequiredSlippage,
20
- getPercentageChange,
21
21
  getQuoteOutputAmount,
22
22
  hasLimitError,
23
23
  isOutputAmountChangedALot,
@@ -67,17 +67,20 @@ export function throwErrorIfResponseIsNotValid(response: BestRouteResponse) {
67
67
  }
68
68
 
69
69
  export function generateWarnings(
70
- previousQuote: BestRouteResponse,
70
+ previousQuote: BestRouteResponse | undefined,
71
71
  currentQuote: BestRouteResponse,
72
72
  params: {
73
73
  fromToken: Token;
74
74
  toToken: Token;
75
- tokens: Token[];
75
+ meta: { blockchains: BlockchainMeta[]; tokens: Token[] };
76
76
  selectedWallets: Wallet[];
77
77
  userSlippage: number;
78
78
  }
79
79
  ): ConfirmSwapWarnings {
80
- const quoteChanged = isQuoteChanged(previousQuote, currentQuote);
80
+ let quoteChanged = false;
81
+ if (previousQuote) {
82
+ quoteChanged = isQuoteChanged(previousQuote, currentQuote);
83
+ }
81
84
  const output: ConfirmSwapWarnings = {
82
85
  quote: null,
83
86
  quoteUpdate: null,
@@ -87,7 +90,7 @@ export function generateWarnings(
87
90
  const quoteWarning = generateQuoteWarnings(currentQuote, {
88
91
  fromToken: params.fromToken,
89
92
  toToken: params.toToken,
90
- tokens: params.tokens,
93
+ tokens: params.meta.tokens,
91
94
  userSlippage: params.userSlippage,
92
95
  });
93
96
 
@@ -95,13 +98,13 @@ export function generateWarnings(
95
98
  output.quote = quoteWarning;
96
99
  }
97
100
 
98
- if (quoteChanged) {
101
+ if (previousQuote && quoteChanged) {
99
102
  if (isOutputAmountChangedALot(previousQuote, currentQuote)) {
100
103
  output.quoteUpdate = {
101
104
  type: QuoteUpdateType.QUOTE_AND_OUTPUT_AMOUNT_UPDATED,
102
105
  newOutputAmount: numberToString(getQuoteOutputAmount(currentQuote)),
103
106
  percentageChange: numberToString(
104
- getPercentageChange(
107
+ getPriceImpact(
105
108
  getQuoteOutputAmount(previousQuote) ?? '',
106
109
  getQuoteOutputAmount(currentQuote) ?? ''
107
110
  ),
@@ -124,9 +127,10 @@ export function generateWarnings(
124
127
  }
125
128
  }
126
129
 
127
- const balanceWarnings = getBalanceWarnings(
130
+ const balanceWarnings = generateBalanceWarnings(
128
131
  currentQuote,
129
- params.selectedWallets
132
+ params.selectedWallets,
133
+ params.meta.blockchains
130
134
  );
131
135
  const enoughBalance = balanceWarnings.length === 0;
132
136
 
@@ -7,9 +7,8 @@ import { useEffect } from 'react';
7
7
 
8
8
  import { useAppStore } from '../../store/AppStore';
9
9
  import { useQuoteStore } from '../../store/quote';
10
- import { useSettingsStore } from '../../store/settings';
11
10
  import { useWalletsStore } from '../../store/wallets';
12
- import { QuoteErrorType } from '../../types';
11
+ import { isFeatureEnabled } from '../../utils/settings';
13
12
  import { createQuoteRequestBody, getWalletsForNewSwap } from '../../utils/swap';
14
13
  import { useFetchQuote } from '../useFetchQuote';
15
14
 
@@ -25,7 +24,6 @@ export function useConfirmSwap(): ConfirmSwap {
25
24
  toToken,
26
25
  inputAmount,
27
26
  setQuote,
28
- resetQuote,
29
27
  quote: initialQuote,
30
28
  customDestination: customDestinationFromStore,
31
29
  setQuoteWarningsConfirmed,
@@ -38,10 +36,12 @@ export function useConfirmSwap(): ConfirmSwap {
38
36
  affiliateRef,
39
37
  affiliateWallets,
40
38
  disabledLiquiditySources,
41
- } = useSettingsStore();
39
+ } = useAppStore();
42
40
  const { connectedWallets } = useWalletsStore();
43
41
  const blockchains = useAppStore().blockchains();
44
42
  const tokens = useAppStore().tokens();
43
+ const { features } = useAppStore().config;
44
+ const { enableNewLiquiditySources } = useAppStore().config;
45
45
 
46
46
  const userSlippage = customSlippage || slippage;
47
47
 
@@ -54,7 +54,7 @@ export function useConfirmSwap(): ConfirmSwap {
54
54
  const customDestination =
55
55
  params?.customDestination ?? customDestinationFromStore;
56
56
 
57
- if (!fromToken || !toToken || !inputAmount || !initialQuote) {
57
+ if (!fromToken || !toToken || !inputAmount) {
58
58
  return {
59
59
  quote: null,
60
60
  swap: null,
@@ -69,15 +69,18 @@ export function useConfirmSwap(): ConfirmSwap {
69
69
  inputAmount,
70
70
  wallets: connectedWallets,
71
71
  selectedWallets,
72
+ excludeLiquiditySources: enableNewLiquiditySources,
72
73
  disabledLiquiditySources,
73
74
  slippage: userSlippage,
74
75
  affiliateRef,
75
76
  affiliatePercent,
76
77
  affiliateWallets,
77
- initialQuote: initialQuote,
78
+ initialQuote: initialQuote ?? undefined,
78
79
  destination: customDestination,
79
80
  });
80
-
81
+ if (isFeatureEnabled('experimentalRoute', features)) {
82
+ requestBody.experimental = true;
83
+ }
81
84
  let currentQuote: BestRouteResponse;
82
85
  try {
83
86
  currentQuote = await fetchQuote(requestBody).then((response) =>
@@ -86,12 +89,6 @@ export function useConfirmSwap(): ConfirmSwap {
86
89
  setQuote(currentQuote);
87
90
  } catch (error: any) {
88
91
  const confirmSwapResult = handleQuoteErrors(error);
89
- if (
90
- confirmSwapResult.error?.type === QuoteErrorType.NO_RESULT ||
91
- confirmSwapResult.error?.type === QuoteErrorType.REQUEST_FAILED
92
- ) {
93
- resetQuote();
94
- }
95
92
  return confirmSwapResult;
96
93
  }
97
94
 
@@ -108,13 +105,17 @@ export function useConfirmSwap(): ConfirmSwap {
108
105
  { blockchains, tokens }
109
106
  );
110
107
 
111
- const confirmSwapWarnings = generateWarnings(initialQuote, currentQuote, {
112
- fromToken,
113
- toToken,
114
- tokens: tokens,
115
- selectedWallets,
116
- userSlippage,
117
- });
108
+ const confirmSwapWarnings = generateWarnings(
109
+ initialQuote ?? undefined,
110
+ currentQuote,
111
+ {
112
+ fromToken,
113
+ toToken,
114
+ meta: { blockchains, tokens },
115
+ selectedWallets,
116
+ userSlippage,
117
+ }
118
+ );
118
119
 
119
120
  if (confirmSwapWarnings.quoteUpdate) {
120
121
  setQuoteWarningsConfirmed(false);
@@ -1,5 +1,5 @@
1
1
  import type { ConfirmSwapWarnings, QuoteError, Wallet } from '../../types';
2
- import type { PendingSwap } from 'rango-types/lib';
2
+ import type { PendingSwap } from 'rango-types';
3
3
 
4
4
  export type ConfirmSwapFetchResult = {
5
5
  swap: PendingSwap | null;