@rabbitio/ui-kit 1.0.0-beta.95 → 1.0.0-beta.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/coverage/clover.xml +1215 -5323
- package/coverage/coverage-final.json +116 -183
- package/coverage/index.html +91 -361
- package/coverage/{ui-kit → rabbit-ui-kit}/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/index.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/adapters/analyticsAdapters/googleAnalyticsAdapter.js.html +9 -6
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/adapters/analyticsAdapters/index.html +9 -9
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/adapters/analyticsAdapters/metrikaAdapter.js.html +9 -6
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/adapters/analyticsAdapters/mixpanelAdapter.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/adapters/axiosAdapter.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/adapters/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/adapters/qrUtils.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/external-apis/apiGroups.js.html +6 -6
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/external-apis/emailAPI.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/external-apis/index.html +7 -7
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/external-apis/ipAddressProviders.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/globalConstants.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/models/blockchain.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/models/coin.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/models/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/models/protocol.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/services/fiatCurrenciesService.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/services/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/amountUtils.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/cache.js.html +8 -8
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/errorUtils.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/index.html +17 -17
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/logging/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/logging/logger.js.html +6 -6
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/logging/logsStorage.js.html +5 -5
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/postponeExecution.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/rabbitTicker.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/safeStringify.js.html +40 -40
- package/coverage/{ui-kit → rabbit-ui-kit}/src/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/index.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/robust-api-caller/cacheAndConcurrentRequestsResolver.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/robust-api-caller/cachedRobustExternalApiCallerService.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/robust-api-caller/cancelProcessing.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/robust-api-caller/concurrentCalculationsMetadataHolder.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/robust-api-caller/externalApiProvider.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/robust-api-caller/externalServicesStatsCollector.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/robust-api-caller/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/robust-api-caller/robustExternalAPICallerService.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/external-apis/exolixSwapProvider.js.html +121 -112
- package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/external-apis/index.html +47 -32
- package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/external-apis/letsExchangeSwapProvider.js.html +24 -9
- package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/external-apis/swapProvider.js.html +266 -260
- package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/external-apis/swapspaceSwapProvider.js.html +200 -161
- package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/utils.js.html +130 -0
- package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/models/baseSwapCreationInfo.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/models/existingSwap.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/models/existingSwapWithFiatData.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/models/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/models/partner.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/models/swapProviderCoinInfo.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/services/index.html +7 -7
- package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/services/publicSwapService.js.html +24 -9
- package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/utils/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/utils/swapUtils.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/arrowIcon.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/arrowTosca.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/arrowWhite.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/darkRectangle.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/determinedError.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/failedValidationIcon.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/infoIcon.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/messageIcon.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/noticeQuestionIcon.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/successfulValidationIcon.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/supportDialogImage.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/walletIcon.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/AssetIcon/AssetIcon.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/AssetIcon/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/AssetSelection/AssetSelection.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/AssetSelection/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/BackgroundTitle/BackgroundTitle.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/BackgroundTitle/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/InformationMessage/InformationMessage.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/InformationMessage/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/Input/Input.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/Input/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/LoadingDots/LoadingDots.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/LoadingDots/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/NoticeIcon/NoticeIcon.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/NoticeIcon/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/QrCode/QrCode.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/QrCode/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/RateSelector/RateSelector.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/RateSelector/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/SupportChat/SupportChat.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/SupportChat/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/Textarea/Textarea.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/Textarea/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/TitleBox/TitleBox.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/TitleBox/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/Tooltip/Tooltip.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/Tooltip/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/TwoLinesOfText/LinesOfText.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/TwoLinesOfText/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/Validation/Validation.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/Validation/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/buttons/Button/Button.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/buttons/Button/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/buttons/Close/Close.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/buttons/Close/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/buttons/LinkButton/LinkButton.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/buttons/LinkButton/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/buttons/RadioButtonWithText/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/AmountInput/AmountInput.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/AmountInput/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/CoinPicker/CoinPicker.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/CoinPicker/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/ColoredNotice/ColoredNotice.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/ColoredNotice/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/LineWithIconLink/LineWithIconLink.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/LineWithIconLink/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/LogoCarousel/LogoCarousel.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/LogoCarousel/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/SearchableCoinsList/SearchableCoinsList.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/SearchableCoinsList/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/TitledLineWithIconLink/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/CoinPickerDialogStep/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/Dialog/Dialog.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/Dialog/DialogButtons/DialogButtons.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/Dialog/DialogButtons/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/Dialog/DialogStep/DialogStep.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/Dialog/DialogStep/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/Dialog/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/SwapForm/SwapForm.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/SwapForm/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/WaitlistSubscription/WaitlistSubscription.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/WaitlistSubscription/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/templates/DeterminedErrorDialogStep/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/hooks/index.html +7 -7
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/hooks/useCallHandlingErrors.js.html +36 -21
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/hooks/useIsHydrated.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/hooks/useReferredState.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/utils/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/utils/inputValueProviders.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/utils/textUtils.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/utils/uiUtils.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/utils/urlQueryUtils.js.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/BackgroundTitle.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/LinesOfText.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/LoadingDots.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/QrCode.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/RateSelector.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/Validation.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/buttons/Button.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/buttons/Close.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/buttons/LinkButton.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/buttons/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/molecules/AmountInput.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/molecules/CoinPicker.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/molecules/ColoredNotice.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/molecules/LineWithIconLink.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/molecules/LogoCarousel.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/molecules/TitledLineWithIconLink.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/molecules/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/organisms/Dialog/Dialog.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/organisms/Dialog/DialogButtons/DialogButtons.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/organisms/Dialog/DialogButtons/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/organisms/Dialog/DialogStep/DialogStep.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/organisms/Dialog/DialogStep/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/organisms/Dialog/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/organisms/WaitlistSubscription.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/organisms/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/stubs/coins.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/stubs/exampleContent.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/stubs/index.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/templates/DeterminedErrorDialogStep.stories.jsx.html +3 -3
- package/coverage/{ui-kit → rabbit-ui-kit}/stories/templates/index.html +3 -3
- package/dist/index.cjs +88 -57
- package/dist/index.cjs.map +1 -1
- package/dist/index.modern.js +70 -44
- package/dist/index.modern.js.map +1 -1
- package/dist/index.module.js +88 -57
- package/dist/index.module.js.map +1 -1
- package/dist/index.umd.js +88 -57
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/common-apis/adapters/analyticsAdapters/googleAnalyticsAdapter.js +1 -0
- package/src/common-apis/adapters/analyticsAdapters/metrikaAdapter.js +1 -0
- package/src/common-apis/external-apis/apiGroups.js +1 -1
- package/src/swaps-lib/external-apis/exolixSwapProvider.js +18 -15
- package/src/swaps-lib/external-apis/letsExchangeSwapProvider.js +8 -3
- package/src/swaps-lib/external-apis/swapProvider.js +3 -1
- package/src/swaps-lib/external-apis/swapspaceSwapProvider.js +22 -9
- package/src/swaps-lib/external-apis/utils.js +15 -0
- package/src/swaps-lib/services/publicSwapService.js +8 -3
- package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getSwapInfo.test.js +36 -0
- package/src/ui-kit/hooks/useCallHandlingErrors.js +20 -15
- package/coverage/ui-kit/storybook-static/230.7eace282.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/242.dda46cfa.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/312.6f62bbd9.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/341.57a15f57.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/374.99dab897.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/43.c12e28b8.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/450.d467c07c.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/506.07d46882.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/547.cc28f1fd.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/586.e7130528.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/595.2e40d981.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/607.3ea32459.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/609.097df435.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/797.c87cdf19.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/889.4a86fe2b.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/976.b5f1a5d4.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/996.07a638d5.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/AmountUtils-stories.e2f66b30.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/atoms-BackgroundTitle-stories.1a5386a1.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/atoms-LinesOfText-stories.b7c8f08a.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/atoms-LoadingDots-stories.5180c2f1.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/atoms-QrCode-stories.1581ad1e.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/atoms-RateSelector-stories.19c65c98.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/atoms-Validation-stories.d561b311.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/atoms-buttons-Button-stories.e8e6b930.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/atoms-buttons-Close-stories.0a902a7c.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/atoms-buttons-LinkButton-stories.10813be5.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/index.html +0 -686
- package/coverage/ui-kit/storybook-static/main.da938fde.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/molecules-AmountInput-stories.a703ba8d.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/molecules-ColoredNotice-stories.7a5d624e.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/molecules-LineWithIconLink-stories.b7f70ee2.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/molecules-LogoCarousel-stories.2ce1402f.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/molecules-TitledLineWithIconLink-stories.1383fe3f.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/organisms-Dialog-Dialog-stories.4e6da717.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/organisms-Dialog-DialogButtons-DialogButtons-stories.1d1f9803.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/organisms-Dialog-DialogStep-DialogStep-stories.74896048.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/organisms-WaitlistSubscription-stories.a7c49a29.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/dist/global.css.html +0 -118
- package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/dist/index.html +0 -116
- package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/node_modules/@storybook/addon-backgrounds/dist/index.html +0 -116
- package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/node_modules/@storybook/addon-backgrounds/dist/preview.js.html +0 -118
- package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/node_modules/@storybook/components/dist/formatter-SWP5E3XI.mjs.html +0 -118
- package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/node_modules/@storybook/components/dist/index.html +0 -116
- package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/node_modules/buffer/index.html +0 -116
- package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/node_modules/buffer/index.js.html +0 -118
- package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/node_modules/markdown-to-jsx/dist/index.html +0 -116
- package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/node_modules/markdown-to-jsx/dist/index.modern.js.html +0 -118
- package/coverage/ui-kit/storybook-static/runtime~main.795022f7.iframe.bundle.js.html +0 -85
- package/coverage/ui-kit/storybook-static/sb-addons/actions-9/index.html +0 -116
- package/coverage/ui-kit/storybook-static/sb-addons/actions-9/manager-bundle.js.html +0 -94
- package/coverage/ui-kit/storybook-static/sb-addons/essentials-backgrounds-2/index.html +0 -116
- package/coverage/ui-kit/storybook-static/sb-addons/essentials-backgrounds-2/manager-bundle.js.html +0 -121
- package/coverage/ui-kit/storybook-static/sb-addons/essentials-controls-1/index.html +0 -116
- package/coverage/ui-kit/storybook-static/sb-addons/essentials-controls-1/manager-bundle.js.html +0 -274
- package/coverage/ui-kit/storybook-static/sb-addons/essentials-measure-4/index.html +0 -116
- package/coverage/ui-kit/storybook-static/sb-addons/essentials-measure-4/manager-bundle.js.html +0 -94
- package/coverage/ui-kit/storybook-static/sb-addons/essentials-outline-5/index.html +0 -116
- package/coverage/ui-kit/storybook-static/sb-addons/essentials-outline-5/manager-bundle.js.html +0 -94
- package/coverage/ui-kit/storybook-static/sb-addons/essentials-toolbars-3/index.html +0 -116
- package/coverage/ui-kit/storybook-static/sb-addons/essentials-toolbars-3/manager-bundle.js.html +0 -94
- package/coverage/ui-kit/storybook-static/sb-addons/interactions-7/index.html +0 -116
- package/coverage/ui-kit/storybook-static/sb-addons/interactions-7/manager-bundle.js.html +0 -121
- package/coverage/ui-kit/storybook-static/sb-addons/links-0/index.html +0 -116
- package/coverage/ui-kit/storybook-static/sb-addons/links-0/manager-bundle.js.html +0 -94
- package/coverage/ui-kit/storybook-static/sb-addons/onboarding-6/index.html +0 -116
- package/coverage/ui-kit/storybook-static/sb-addons/onboarding-6/manager-bundle.js.html +0 -1588
- package/coverage/ui-kit/storybook-static/sb-addons/viewport-8/index.html +0 -116
- package/coverage/ui-kit/storybook-static/sb-addons/viewport-8/manager-bundle.js.html +0 -94
- package/coverage/ui-kit/storybook-static/sb-manager/WithTooltip-V3YHNWJZ-LVYLGZW2.js.html +0 -88
- package/coverage/ui-kit/storybook-static/sb-manager/chunk-2IXBUOFS.js.html +0 -106
- package/coverage/ui-kit/storybook-static/sb-manager/chunk-INSKDKQB.js.html +0 -1129
- package/coverage/ui-kit/storybook-static/sb-manager/chunk-NGTUFCUO.js.html +0 -112
- package/coverage/ui-kit/storybook-static/sb-manager/chunk-UUEAOBSN.js.html +0 -1303
- package/coverage/ui-kit/storybook-static/sb-manager/chunk-ZEU7PDD3.js.html +0 -88
- package/coverage/ui-kit/storybook-static/sb-manager/formatter-SWP5E3XI-7BGIK6BL.js.html +0 -553
- package/coverage/ui-kit/storybook-static/sb-manager/globals-module-info.js.html +0 -88
- package/coverage/ui-kit/storybook-static/sb-manager/globals.js.html +0 -88
- package/coverage/ui-kit/storybook-static/sb-manager/index.html +0 -281
- package/coverage/ui-kit/storybook-static/sb-manager/index.js.html +0 -88
- package/coverage/ui-kit/storybook-static/sb-manager/runtime.js.html +0 -88
- package/coverage/ui-kit/storybook-static/sb-manager/syntaxhighlighter-V7JZZA35-DXZCI2WR.js.html +0 -88
- package/coverage/ui-kit/storybook-static/sb-preview/globals.js.html +0 -88
- package/coverage/ui-kit/storybook-static/sb-preview/index.html +0 -131
- package/coverage/ui-kit/storybook-static/sb-preview/runtime.js.html +0 -421
- package/coverage/ui-kit/storybook-static/templates-DeterminedErrorDialogStep-stories.3cc14214.iframe.bundle.js.html +0 -85
package/package.json
CHANGED
|
@@ -3,6 +3,7 @@ import { safeStringify } from "../../utils/safeStringify.js";
|
|
|
3
3
|
|
|
4
4
|
export class GoogleAnalyticsAdapter {
|
|
5
5
|
static sendEvent(eventName, parameters) {
|
|
6
|
+
// eslint-disable-next-line no-console
|
|
6
7
|
console.log("Sending ga event: ", parameters, ["event", eventName, parameters]);
|
|
7
8
|
this.doActionOnGTag(["event", eventName, parameters]);
|
|
8
9
|
}
|
|
@@ -11,6 +11,7 @@ export class MetrikaAdapter {
|
|
|
11
11
|
static callMetrikaReachGoal(METRIKA_ID, goalName, usdPrice = null) {
|
|
12
12
|
try {
|
|
13
13
|
if (window.ym) {
|
|
14
|
+
// eslint-disable-next-line no-console
|
|
14
15
|
console.log("Sending metrika goal reached: ", goalName, String(usdPrice));
|
|
15
16
|
window.ym(
|
|
16
17
|
METRIKA_ID,
|
|
@@ -26,7 +26,7 @@ export const ApiGroups = {
|
|
|
26
26
|
* Currently we use free version of etherscan provider with 0.2 RPS. But we have API key with 100k requests free
|
|
27
27
|
* per month. So we can add it if not enough current RPS.
|
|
28
28
|
*/
|
|
29
|
-
ETHERSCAN: new ApiGroup("etherscan", 0.
|
|
29
|
+
ETHERSCAN: new ApiGroup("etherscan", 0.2, networkKey => `etherscan-${networkKey}`),
|
|
30
30
|
ALCHEMY: new ApiGroup("alchemy", 0.3, networkKey => `alchemy-${networkKey}`),
|
|
31
31
|
BLOCKSTREAM: new ApiGroup("blockstream", 0.2),
|
|
32
32
|
BLOCKCHAIN_INFO: new ApiGroup("blockchain.info", 1),
|
|
@@ -14,6 +14,7 @@ import { SwapProvider } from "./swapProvider";
|
|
|
14
14
|
import { ExistingSwap } from "../models/existingSwap";
|
|
15
15
|
import { Partner } from "../models/partner";
|
|
16
16
|
import { SwapProviderCoinInfo } from "../models/swapProviderCoinInfo";
|
|
17
|
+
import { createRobustTimeoutSetupForAxios } from "./utils.js";
|
|
17
18
|
|
|
18
19
|
export class ExolixSwapProvider extends SwapProvider {
|
|
19
20
|
constructor(
|
|
@@ -24,18 +25,21 @@ export class ExolixSwapProvider extends SwapProvider {
|
|
|
24
25
|
apiKey = ""
|
|
25
26
|
) {
|
|
26
27
|
super("exolix", cache, customCoinBuilder, useRestrictedCoinsSet, false, true);
|
|
28
|
+
|
|
29
|
+
const headers = apiKey ? { Authorization: "Bearer " + apiKey } : {};
|
|
30
|
+
|
|
27
31
|
this._partners = [];
|
|
28
32
|
this._URL = apiKey ? "https://exolix.com/api/v2" : `${apiKeysProxyUrl}/${this.id}`;
|
|
29
33
|
this.COINS_EXPIRATION_TIME_MS = 5 * 60 * 1000;
|
|
30
34
|
this.coinsLastUpdateTimestamp = null;
|
|
31
|
-
this.headers =
|
|
35
|
+
this.headers = headers;
|
|
36
|
+
this.axiosGetPreset = {
|
|
37
|
+
headers: headers,
|
|
38
|
+
validateStatus: responseCode => [200, 201, 404].find(code => code === responseCode),
|
|
39
|
+
...createRobustTimeoutSetupForAxios()
|
|
40
|
+
};
|
|
32
41
|
}
|
|
33
42
|
|
|
34
|
-
axiosGetPreset = (headers = {}) => ({
|
|
35
|
-
headers: headers,
|
|
36
|
-
validateStatus: responseCode => [200, 201, 404].find(code => code === responseCode),
|
|
37
|
-
});
|
|
38
|
-
|
|
39
43
|
getSwapCreationInfoTtlMs() {
|
|
40
44
|
return 110000;
|
|
41
45
|
}
|
|
@@ -50,7 +54,7 @@ export class ExolixSwapProvider extends SwapProvider {
|
|
|
50
54
|
|
|
51
55
|
while (true) {
|
|
52
56
|
const responseRaw = await axios.get(this._URL + "/currencies", {
|
|
53
|
-
...this.axiosGetPreset
|
|
57
|
+
...this.axiosGetPreset,
|
|
54
58
|
params: { withNetworks: true, page: page, size: pageSize },
|
|
55
59
|
});
|
|
56
60
|
|
|
@@ -245,7 +249,7 @@ export class ExolixSwapProvider extends SwapProvider {
|
|
|
245
249
|
}
|
|
246
250
|
|
|
247
251
|
const response = await axios.get(this._URL + "/rate", {
|
|
248
|
-
...this.axiosGetPreset
|
|
252
|
+
...this.axiosGetPreset,
|
|
249
253
|
params: {
|
|
250
254
|
coinFrom: fromCoinDetails.code,
|
|
251
255
|
networkFrom: fromCoinDetails.network,
|
|
@@ -258,7 +262,10 @@ export class ExolixSwapProvider extends SwapProvider {
|
|
|
258
262
|
});
|
|
259
263
|
Logger.log(`Retrieved ${response?.data}`, loggerSource);
|
|
260
264
|
if (typeof response?.data !== "object") {
|
|
261
|
-
Logger.log(
|
|
265
|
+
Logger.log(
|
|
266
|
+
`Swap response didn't include the data object ${safeStringify(response?.data)}`,
|
|
267
|
+
loggerSource
|
|
268
|
+
);
|
|
262
269
|
return { result: false, reason: SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED };
|
|
263
270
|
}
|
|
264
271
|
|
|
@@ -398,11 +405,7 @@ export class ExolixSwapProvider extends SwapProvider {
|
|
|
398
405
|
};
|
|
399
406
|
|
|
400
407
|
Logger.log(`Sending create request: ${safeStringify(requestData)}`, loggerSource);
|
|
401
|
-
const response = await axios.post(
|
|
402
|
-
this._URL + "/transactions",
|
|
403
|
-
requestData,
|
|
404
|
-
this.axiosGetPreset(this.headers)
|
|
405
|
-
);
|
|
408
|
+
const response = await axios.post(this._URL + "/transactions", requestData, this.axiosGetPreset);
|
|
406
409
|
|
|
407
410
|
const result = response?.data;
|
|
408
411
|
Logger.log(`Creation result ${safeStringify(result)}`, loggerSource);
|
|
@@ -478,7 +481,7 @@ export class ExolixSwapProvider extends SwapProvider {
|
|
|
478
481
|
}
|
|
479
482
|
const getSwap = async swapId => {
|
|
480
483
|
try {
|
|
481
|
-
return await axios.get(this._URL + "/transactions/" + swapId, this.axiosGetPreset
|
|
484
|
+
return await axios.get(this._URL + "/transactions/" + swapId, this.axiosGetPreset);
|
|
482
485
|
} catch (error) {
|
|
483
486
|
if (error?.response?.status === 404) return [];
|
|
484
487
|
throw error;
|
|
@@ -12,6 +12,7 @@ import { DEFAULT_CRYPTO_DECIMAL_COUNT, FALLBACK_ASSET_ICON_URL } from "../../com
|
|
|
12
12
|
import { SwapProviderCoinInfo } from "../models/swapProviderCoinInfo.js";
|
|
13
13
|
import { Partner } from "../models/partner.js";
|
|
14
14
|
import { toRabbitTicker } from "../../common-apis/utils/rabbitTicker.js";
|
|
15
|
+
import { createRobustTimeoutSetupForAxios } from "./utils.js";
|
|
15
16
|
|
|
16
17
|
export class LetsExchangeSwapProvider extends SwapProvider {
|
|
17
18
|
constructor(
|
|
@@ -43,7 +44,10 @@ export class LetsExchangeSwapProvider extends SwapProvider {
|
|
|
43
44
|
const loggerSource = "_fetchSupportedCurrenciesIfNeeded";
|
|
44
45
|
try {
|
|
45
46
|
if (this._shouldCoinsListBeLoaded()) {
|
|
46
|
-
const rawResponse = await axios.get(`${this._URL}/v2/coins`, {
|
|
47
|
+
const rawResponse = await axios.get(`${this._URL}/v2/coins`, {
|
|
48
|
+
headers: this._headers,
|
|
49
|
+
...createRobustTimeoutSetupForAxios(),
|
|
50
|
+
});
|
|
47
51
|
Logger.log(`Retrieved ${rawResponse?.data?.length}`, loggerSource);
|
|
48
52
|
let allowedCoins = rawResponse?.data ?? [];
|
|
49
53
|
Logger.log(`Allowed cnt ${allowedCoins.length}`, loggerSource);
|
|
@@ -168,7 +172,7 @@ export class LetsExchangeSwapProvider extends SwapProvider {
|
|
|
168
172
|
amount: amountCoins,
|
|
169
173
|
affiliate_id: LetsExchangeSwapProvider.AFFILIATE_ID,
|
|
170
174
|
},
|
|
171
|
-
{ headers: this._headers }
|
|
175
|
+
{ headers: this._headers, ...createRobustTimeoutSetupForAxios() }
|
|
172
176
|
);
|
|
173
177
|
Logger.log(`Retrieved ${response?.data}`, loggerSource);
|
|
174
178
|
const data = response.data;
|
|
@@ -323,7 +327,7 @@ export class LetsExchangeSwapProvider extends SwapProvider {
|
|
|
323
327
|
const response = await axios.post(
|
|
324
328
|
`${this._URL}/v1/transaction${amountIsToReceive ? "-revert" : `?float=${!fixed}`}`,
|
|
325
329
|
requestBody,
|
|
326
|
-
{ headers: this._headers }
|
|
330
|
+
{ headers: this._headers, ...createRobustTimeoutSetupForAxios() }
|
|
327
331
|
);
|
|
328
332
|
const result = response.data;
|
|
329
333
|
Logger.log(`Creation result ${safeStringify(result)}`, loggerSource);
|
|
@@ -378,6 +382,7 @@ export class LetsExchangeSwapProvider extends SwapProvider {
|
|
|
378
382
|
}
|
|
379
383
|
const response = await axios.get(`${this._URL}/v1/transactions-list?ids[]=${swapIds.join("&ids[]=")}`, {
|
|
380
384
|
headers: this._headers,
|
|
385
|
+
...createRobustTimeoutSetupForAxios(),
|
|
381
386
|
});
|
|
382
387
|
|
|
383
388
|
Logger.log("All swaps RAW: " + safeStringify(response.data), loggerSource);
|
|
@@ -378,6 +378,7 @@ export class SwapProvider {
|
|
|
378
378
|
* by provider with some fixed "insurance" amount to cover min amount fluctuations.
|
|
379
379
|
* @param [amountIsToReceive=false] {boolean} whether the given amount is receiving amount. False means the amount is the sending amount.
|
|
380
380
|
* @param [bannedPartners=[]] {string[]} list of ids of banned partners to be excluded from list, suitable only for swap aggregators
|
|
381
|
+
* @param [whitelistedPartners=null] {string[]|null} list of ids of whitelisted partners. Banned whitelisted partner will not be used for estimation.
|
|
381
382
|
* @return {Promise<({
|
|
382
383
|
* result: false,
|
|
383
384
|
* reason: string,
|
|
@@ -403,7 +404,8 @@ export class SwapProvider {
|
|
|
403
404
|
fixed = false,
|
|
404
405
|
fromCoinToUsdRate = null,
|
|
405
406
|
amountIsToReceive = false,
|
|
406
|
-
bannedPartners = []
|
|
407
|
+
bannedPartners = [],
|
|
408
|
+
whitelistedPartners = null
|
|
407
409
|
) {
|
|
408
410
|
throw new Error("Not implemented in base");
|
|
409
411
|
}
|
|
@@ -13,8 +13,7 @@ import { FALLBACK_ASSET_ICON_URL } from "../../common-apis/globalConstants.jsx";
|
|
|
13
13
|
import { SwapProviderCoinInfo } from "../models/swapProviderCoinInfo.js";
|
|
14
14
|
import { KYC_LEVELS, Partner } from "../models/partner.js";
|
|
15
15
|
import { toRabbitTicker } from "../../common-apis/utils/rabbitTicker.js";
|
|
16
|
-
|
|
17
|
-
export const BANNED_PARTNERS = ["stealthex", "changee", "coincraddle", "easybit", "changelly"];
|
|
16
|
+
import { createRobustTimeoutSetupForAxios } from "./utils.js";
|
|
18
17
|
|
|
19
18
|
export class SwapspaceSwapProvider extends SwapProvider {
|
|
20
19
|
/**
|
|
@@ -49,7 +48,10 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
49
48
|
const loggerSource = "_fetchSupportedCurrenciesIfNeeded";
|
|
50
49
|
try {
|
|
51
50
|
if (this._shouldCoinsListBeLoaded()) {
|
|
52
|
-
const rawResponse = await axios.get(`${this._URL}/api/v2/currencies`, {
|
|
51
|
+
const rawResponse = await axios.get(`${this._URL}/api/v2/currencies`, {
|
|
52
|
+
headers: this._headers,
|
|
53
|
+
...createRobustTimeoutSetupForAxios(),
|
|
54
|
+
});
|
|
53
55
|
Logger.log(`Retrieved ${rawResponse?.data?.length}`, loggerSource);
|
|
54
56
|
let allowedCoins = rawResponse?.data ?? [];
|
|
55
57
|
Logger.log(`Allowed cnt ${allowedCoins.length}`, loggerSource);
|
|
@@ -127,7 +129,10 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
127
129
|
const loggerSource = "_fetchPartnersListIfNeeded";
|
|
128
130
|
try {
|
|
129
131
|
if (this._partners?.length === 0) {
|
|
130
|
-
const rawResponse = await axios.get(`${this._URL}/api/v2/partners`, {
|
|
132
|
+
const rawResponse = await axios.get(`${this._URL}/api/v2/partners`, {
|
|
133
|
+
headers: this._headers,
|
|
134
|
+
...createRobustTimeoutSetupForAxios(),
|
|
135
|
+
});
|
|
131
136
|
Logger.log(`Retrieved ${rawResponse?.data?.length} partners`, loggerSource);
|
|
132
137
|
this._partners = Array.isArray(rawResponse?.data) ? rawResponse?.data : [];
|
|
133
138
|
}
|
|
@@ -143,7 +148,8 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
143
148
|
fixed = false,
|
|
144
149
|
fromCoinToUsdRate = null,
|
|
145
150
|
amountIsToReceive = false,
|
|
146
|
-
bannedPartners = []
|
|
151
|
+
bannedPartners = [],
|
|
152
|
+
whitelistedPartners = null
|
|
147
153
|
) {
|
|
148
154
|
const loggerSource = "getSwapInfo";
|
|
149
155
|
try {
|
|
@@ -185,7 +191,7 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
185
191
|
*/
|
|
186
192
|
const response = await axios.get(
|
|
187
193
|
`${this._URL}/api/v2/amounts?fromCurrency=${fromCoinSwapspaceDetails.code}&fromNetwork=${fromCoinSwapspaceDetails.network}&toNetwork=${toCoinSwapspaceDetails.network}&toCurrency=${toCoinSwapspaceDetails.code}&amount=${amountCoins}&estimated=false`,
|
|
188
|
-
{ headers: this._headers }
|
|
194
|
+
{ headers: this._headers, ...createRobustTimeoutSetupForAxios() }
|
|
189
195
|
);
|
|
190
196
|
Logger.log(`Retrieved ${response?.data?.length} options`, loggerSource);
|
|
191
197
|
const options = Array.isArray(response.data) ? response.data : [];
|
|
@@ -193,7 +199,8 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
193
199
|
let exchangesSupportingThePairDespiteFixedOrFloating = options.filter(
|
|
194
200
|
exchange =>
|
|
195
201
|
exchange?.exists &&
|
|
196
|
-
!bannedPartners.
|
|
202
|
+
!bannedPartners.includes(exchange?.partner) &&
|
|
203
|
+
(whitelistedPartners == null || whitelistedPartners.includes(exchange?.partner)) &&
|
|
197
204
|
(exchange?.fixed === false || exchange?.fixed === true) &&
|
|
198
205
|
typeof exchange.toAmount === "number" &&
|
|
199
206
|
((typeof exchange.min === "number" && typeof exchange.max === "number") || exchange.toAmount > 0) &&
|
|
@@ -379,7 +386,10 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
379
386
|
};
|
|
380
387
|
|
|
381
388
|
Logger.log(`Sending create request: ${safeStringify(requestData)}`, loggerSource);
|
|
382
|
-
const response = await axios.post(`${this._URL}/api/v2/exchange`, requestData, {
|
|
389
|
+
const response = await axios.post(`${this._URL}/api/v2/exchange`, requestData, {
|
|
390
|
+
headers: this._headers,
|
|
391
|
+
...createRobustTimeoutSetupForAxios(),
|
|
392
|
+
});
|
|
383
393
|
const result = response.data;
|
|
384
394
|
Logger.log(`Creation result ${safeStringify(result)}`, loggerSource);
|
|
385
395
|
|
|
@@ -488,7 +498,10 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
488
498
|
}
|
|
489
499
|
const getNotFailingOn404 = async swapId => {
|
|
490
500
|
try {
|
|
491
|
-
return await axios.get(`${this._URL}/api/v2/exchange/${swapId}`, {
|
|
501
|
+
return await axios.get(`${this._URL}/api/v2/exchange/${swapId}`, {
|
|
502
|
+
headers: this._headers,
|
|
503
|
+
...createRobustTimeoutSetupForAxios(),
|
|
504
|
+
});
|
|
492
505
|
} catch (error) {
|
|
493
506
|
if (error?.response?.status === 404) return [];
|
|
494
507
|
throw error;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const HTTP_TIMEOUT_MS = 30 * 1000;
|
|
2
|
+
|
|
3
|
+
export function createAbortSignalForHttpRequest(timeoutMs = HTTP_TIMEOUT_MS) {
|
|
4
|
+
const abortController = new AbortController();
|
|
5
|
+
setTimeout(() => abortController.abort(), timeoutMs);
|
|
6
|
+
|
|
7
|
+
return abortController.signal;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function createRobustTimeoutSetupForAxios() {
|
|
11
|
+
return {
|
|
12
|
+
timeout: HTTP_TIMEOUT_MS,
|
|
13
|
+
signal: createAbortSignalForHttpRequest(HTTP_TIMEOUT_MS),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
@@ -68,6 +68,7 @@ export class PublicSwapService {
|
|
|
68
68
|
* @param [amountIsToReceive=false] {boolean} whether the given amount is receiving amount.
|
|
69
69
|
* False means the amount is the sending amount.
|
|
70
70
|
* @param bannedPartners {string[]} array of banned swap partners (providers) ids (rabbit ids)
|
|
71
|
+
* @param [whitelistedPartners=null] {string[]|null} array of banned swap partners (providers) ids (rabbit ids)
|
|
71
72
|
* @return {Promise<{
|
|
72
73
|
* result: false,
|
|
73
74
|
* reason: string,
|
|
@@ -89,7 +90,8 @@ export class PublicSwapService {
|
|
|
89
90
|
fixed = false,
|
|
90
91
|
coinUsdtRate = null,
|
|
91
92
|
amountIsToReceive = false,
|
|
92
|
-
bannedPartners = []
|
|
93
|
+
bannedPartners = [],
|
|
94
|
+
whitelistedPartners = null
|
|
93
95
|
) {
|
|
94
96
|
const loggerSource = "getPublicSwapDetails";
|
|
95
97
|
try {
|
|
@@ -105,7 +107,9 @@ export class PublicSwapService {
|
|
|
105
107
|
if (typeof toCoin === "string") {
|
|
106
108
|
toCoin = this.getCoinByTickerIfPresent(toCoin);
|
|
107
109
|
}
|
|
108
|
-
const isPartnerBanned =
|
|
110
|
+
const isPartnerBanned =
|
|
111
|
+
bannedPartners.includes(provider.id) ||
|
|
112
|
+
(whitelistedPartners != null && !whitelistedPartners.includes(provider.id));
|
|
109
113
|
if (!fromCoin || !toCoin || isPartnerBanned) {
|
|
110
114
|
return {
|
|
111
115
|
result: false,
|
|
@@ -125,7 +129,8 @@ export class PublicSwapService {
|
|
|
125
129
|
fixed,
|
|
126
130
|
coinUsdtRate,
|
|
127
131
|
amountIsToReceive,
|
|
128
|
-
bannedPartners
|
|
132
|
+
bannedPartners,
|
|
133
|
+
whitelistedPartners
|
|
129
134
|
);
|
|
130
135
|
|
|
131
136
|
// eslint-disable-next-line no-console
|
|
@@ -1678,6 +1678,7 @@ describe("swapspaceSwapProvider", function () {
|
|
|
1678
1678
|
result.isRefundAddressRequired.should.be.equal(expected.isRefundAddressRequired);
|
|
1679
1679
|
});
|
|
1680
1680
|
});
|
|
1681
|
+
|
|
1681
1682
|
it("should call _fetchPartnersListIfNeeded ones", async () => {
|
|
1682
1683
|
swapspaceSwapProvider._supportedCoins = [
|
|
1683
1684
|
{ coin: BTC, code: "btc", network: "btc", deposit: true, isAvailable: true },
|
|
@@ -1703,5 +1704,40 @@ describe("swapspaceSwapProvider", function () {
|
|
|
1703
1704
|
|
|
1704
1705
|
_fetchPartnersListIfNeededStub.callCount.should.be.equal(1);
|
|
1705
1706
|
});
|
|
1707
|
+
|
|
1708
|
+
it("should ignore non-whitelisted partners", async () => {
|
|
1709
|
+
swapspaceSwapProvider._supportedCoins = [
|
|
1710
|
+
{ coin: BTC, code: "btc", network: "btc", deposit: true, isAvailable: true },
|
|
1711
|
+
{ coin: ETH, code: "eth", network: "eth", withdrawal: true, isAvailable: true },
|
|
1712
|
+
];
|
|
1713
|
+
const mockData = [
|
|
1714
|
+
{
|
|
1715
|
+
exists: true,
|
|
1716
|
+
fixed: false,
|
|
1717
|
+
toAmount: 200,
|
|
1718
|
+
fromAmount: 1,
|
|
1719
|
+
duration: "10-20",
|
|
1720
|
+
max: 5,
|
|
1721
|
+
min: 0.1,
|
|
1722
|
+
partner: "partner1",
|
|
1723
|
+
},
|
|
1724
|
+
{
|
|
1725
|
+
exists: true,
|
|
1726
|
+
fixed: false,
|
|
1727
|
+
toAmount: 2,
|
|
1728
|
+
fromAmount: 1,
|
|
1729
|
+
duration: "10-20",
|
|
1730
|
+
max: 5,
|
|
1731
|
+
min: 0.1,
|
|
1732
|
+
partner: "partner2",
|
|
1733
|
+
},
|
|
1734
|
+
];
|
|
1735
|
+
axiosGetStub.returns(Promise.resolve({ data: mockData }));
|
|
1736
|
+
|
|
1737
|
+
const result = await swapspaceSwapProvider.getSwapInfo(BTC, ETH, "1", false, null, false, [], ["partner2"]);
|
|
1738
|
+
|
|
1739
|
+
result.result.should.be.true();
|
|
1740
|
+
result.rawSwapData.partner.should.be.equal("partner2");
|
|
1741
|
+
});
|
|
1706
1742
|
});
|
|
1707
1743
|
});
|
|
@@ -2,21 +2,26 @@ import { useCallback, useState } from "react";
|
|
|
2
2
|
|
|
3
3
|
import { Logger } from "../../common-apis/utils/logging/logger.js";
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* This hook retrieves an error-handler function.
|
|
7
|
+
* The error-handler function triggers ErrorBoundary displaying in case of error during the callback function execution.
|
|
8
|
+
* (Actually, we just re-throw an error so react can catch it in the ErrorBoundary, so you should have ErrorBoundary setup for proper behavior).
|
|
9
|
+
*
|
|
10
|
+
* Optionally you can pass a single parameter to the callback.
|
|
11
|
+
*
|
|
12
|
+
* @return {(function(function, any): Promise<void>)} - error handling function accepting callback and optional parameter for it
|
|
13
|
+
*/
|
|
5
14
|
export function useCallHandlingErrors() {
|
|
6
15
|
const [, setState] = useState();
|
|
7
|
-
return useCallback(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
},
|
|
19
|
-
|
|
20
|
-
[]
|
|
21
|
-
);
|
|
16
|
+
return useCallback(async (functionToBeCalled, parameter) => {
|
|
17
|
+
try {
|
|
18
|
+
await functionToBeCalled(parameter);
|
|
19
|
+
} catch (error) {
|
|
20
|
+
Logger.logError(error, functionToBeCalled?.name || "errorBoundaryTrigger", "Caught by ErrorBoundary");
|
|
21
|
+
// Triggering ErrorBoundary
|
|
22
|
+
setState(() => {
|
|
23
|
+
throw error;
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}, []);
|
|
22
27
|
}
|