diff --git a/.release/.changeset/hot-knives-pay.md b/.release/.changeset/hot-knives-pay.md new file mode 100644 index 00000000..3f2a69df --- /dev/null +++ b/.release/.changeset/hot-knives-pay.md @@ -0,0 +1,5 @@ +--- +"@bnb-chain/canonical-bridge-widget": patch +--- + +feat: Send confirm popup diff --git a/.release/.changeset/pre.json b/.release/.changeset/pre.json new file mode 100644 index 00000000..07072fdc --- /dev/null +++ b/.release/.changeset/pre.json @@ -0,0 +1,11 @@ +{ + "mode": "pre", + "tag": "alpha", + "initialVersions": { + "@bnb-chain/canonical-bridge-sdk": "0.4.6", + "@bnb-chain/canonical-bridge-widget": "0.5.16" + }, + "changesets": [ + "hot-knives-pay" + ] +} diff --git a/packages/canonical-bridge-widget/CHANGELOG.md b/packages/canonical-bridge-widget/CHANGELOG.md index a425fd23..ef3cbadf 100644 --- a/packages/canonical-bridge-widget/CHANGELOG.md +++ b/packages/canonical-bridge-widget/CHANGELOG.md @@ -1,5 +1,11 @@ # @bnb-chain/canonical-bridge-widget +## 0.5.17-alpha.0 + +### Patch Changes + +- feat: Send confirm popup + ## 0.5.16 ### Patch Changes diff --git a/packages/canonical-bridge-widget/package.json b/packages/canonical-bridge-widget/package.json index 78bb0e38..7f6b0a8a 100644 --- a/packages/canonical-bridge-widget/package.json +++ b/packages/canonical-bridge-widget/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/canonical-bridge-widget", - "version": "0.5.16", + "version": "0.5.17-alpha.0", "description": "canonical bridge widget", "author": "bnb-chain", "private": false, diff --git a/packages/canonical-bridge-widget/src/modules/transfer/components/TransferWarningMessage/WarningMessage.tsx b/packages/canonical-bridge-widget/src/modules/transfer/components/TransferWarningMessage/WarningMessage.tsx index f6d19991..e31ec811 100644 --- a/packages/canonical-bridge-widget/src/modules/transfer/components/TransferWarningMessage/WarningMessage.tsx +++ b/packages/canonical-bridge-widget/src/modules/transfer/components/TransferWarningMessage/WarningMessage.tsx @@ -22,6 +22,7 @@ export const WarningMessage = ({ text, ...restProps }: { text: React.ReactNode } {...restProps} > { layerZeroFeeSorting.current = _layerZeroFeeSorting; const { mesonFeeSorting: _mesonFeeSorting } = useGetMesonFees(); + const { onOpenFailedGetQuoteModal } = useFailGetQuoteModal(); const mesonFeeSorting = useRef(_mesonFeeSorting); mesonFeeSorting.current = _mesonFeeSorting; @@ -89,6 +92,7 @@ export const useLoadingBridgeFees = () => { const toChain = useAppSelector((state) => state.transfer.toChain); const max_slippage = useAppSelector((state) => state.transfer.slippage); const toAccount = useAppSelector((state) => state.transfer.toAccount); + const isSummaryModalOpen = useAppSelector((state) => state.transfer.isSummaryModalOpen); // Avoid `loadBridgeFees` to be repeatedly executed during toAccount input const toAccountRef = useRef(toAccount.address); @@ -103,6 +107,9 @@ export const useLoadingBridgeFees = () => { const selectedBridgeTypeRef = useRef(transferActionInfo?.bridgeType); selectedBridgeTypeRef.current = transferActionInfo?.bridgeType; + const isSummaryModalOpenRef = useRef(isSummaryModalOpen); + isSummaryModalOpenRef.current = isSummaryModalOpen; + // eslint-disable-next-line @typescript-eslint/no-explicit-any const publicClient = usePublicClient({ chainId: fromChain?.id }) as any; const debouncedSendValue = useDebounce(sendValue, DEBOUNCE_DELAY); @@ -407,12 +414,27 @@ export const useLoadingBridgeFees = () => { dispatch(setEstimatedAmount({ layerZero: undefined })); } + // Check if pre select route is failed + if ( + selectedBridgeTypeRef.current && + valueArr.length === 0 && + isSummaryModalOpenRef.current === true + ) { + dispatch(setIsSummaryModalOpen(false)); + onOpenFailedGetQuoteModal(); + } + // pre-select best route if (valueArr.length > 0) { const lastValue = valueArr.find( (e) => !e.isDisplayError && e.type === selectedBridgeTypeRef.current, ); - + // eslint-disable-next-line no-console + console.log('lastValue', lastValue); + if (lastValue?.type === 'stargate' && isSummaryModalOpenRef.current === true) { + dispatch(setIsSummaryModalOpen(false)); + onOpenFailedGetQuoteModal(); + } const highestValue = valueArr.reduce( (max, entry) => Number(entry['value']) > Number(max['value']) && @@ -460,6 +482,7 @@ export const useLoadingBridgeFees = () => { isWalletCompatible, nativeToken, preSelectRoute, + onOpenFailedGetQuoteModal, ], ); diff --git a/packages/canonical-bridge-widget/src/modules/transfer/hooks/usePreSelectRoute.ts b/packages/canonical-bridge-widget/src/modules/transfer/hooks/usePreSelectRoute.ts index 6fa22b93..d1af4a2a 100644 --- a/packages/canonical-bridge-widget/src/modules/transfer/hooks/usePreSelectRoute.ts +++ b/packages/canonical-bridge-widget/src/modules/transfer/hooks/usePreSelectRoute.ts @@ -4,12 +4,10 @@ import { useCallback } from 'react'; import { useAppDispatch, useAppSelector } from '@/modules/store/StoreProvider'; import { setTransferActionInfo } from '@/modules/transfer/action'; import { useCBridgeTransferParams } from '@/modules/aggregator/adapters/cBridge/hooks/useCBridgeTransferParams'; -import { useFailGetQuoteModal } from '@/modules/transfer/hooks/modal/useFailGetQuoteModal'; export const usePreSelectRoute = () => { const dispatch = useAppDispatch(); const { bridgeAddress: cBridgeAddress } = useCBridgeTransferParams(); - const { onOpenFailedGetQuoteModal } = useFailGetQuoteModal(); const selectedToken = useAppSelector((state) => state.transfer.selectedToken); const fromChain = useAppSelector((state) => state.transfer.fromChain); @@ -64,9 +62,6 @@ export const usePreSelectRoute = () => { bridgeAddress: fromChain?.meson?.raw?.address as `0x${string}`, }), ); - } else { - // Can not find the route - onOpenFailedGetQuoteModal(); } }, [ @@ -75,7 +70,6 @@ export const usePreSelectRoute = () => { selectedToken?.stargate?.raw?.address, cBridgeAddress, fromChain, - onOpenFailedGetQuoteModal, ], );