@@ -32,7 +32,6 @@ import {
3232 EProtocolOfExchange ,
3333 ESwapApproveTransactionStatus ,
3434 ESwapDirectionType ,
35- SwapBuildUseMultiplePopoversNetworkIds ,
3635} from '@onekeyhq/shared/types/swap/types' ;
3736import type { ISendTxOnSuccessData } from '@onekeyhq/shared/types/tx' ;
3837
@@ -52,7 +51,10 @@ import {
5251} from '../../../states/jotai/contexts/swap' ;
5352
5453import { useSwapAddressInfo } from './useSwapAccount' ;
55- import { useSwapSlippagePercentageModeInfo } from './useSwapState' ;
54+ import {
55+ useSwapBatchTransfer ,
56+ useSwapSlippagePercentageModeInfo ,
57+ } from './useSwapState' ;
5658import { useSwapTxHistoryActions } from './useSwapTxHistory' ;
5759
5860export function useSwapBuildTx ( ) {
@@ -66,7 +68,6 @@ export function useSwapBuildTx() {
6668 const [ , setSwapBuildTxFetching ] = useSwapBuildTxFetchingAtom ( ) ;
6769 const [ inAppNotificationAtom , setInAppNotificationAtom ] =
6870 useInAppNotificationAtom ( ) ;
69- const [ settingsPersistAtom ] = useSettingsPersistAtom ( ) ;
7071 const [ , setSwapFromTokenAmount ] = useSwapFromTokenAmountAtom ( ) ;
7172 const [ , setSwapShouldRefreshQuote ] = useSwapShouldRefreshQuoteAtom ( ) ;
7273 const [ swapTypeSwitch ] = useSwapTypeSwitchAtom ( ) ;
@@ -81,7 +82,14 @@ export function useSwapBuildTx() {
8182 accountId : swapFromAddressInfo . accountInfo ?. account ?. id ?? '' ,
8283 networkId : swapFromAddressInfo . networkId ?? '' ,
8384 } ) ;
85+
8486 const pageType = usePageType ( ) ;
87+
88+ const isBatchTransfer = useSwapBatchTransfer (
89+ swapFromAddressInfo . networkId ,
90+ swapFromAddressInfo . accountInfo ?. account ?. id ,
91+ ) ;
92+
8593 const syncRecentTokenPairs = useCallback (
8694 async ( {
8795 swapFromToken,
@@ -533,7 +541,7 @@ export function useSwapBuildTx() {
533541 swapFromAddressInfo . accountInfo ?. account ?. id &&
534542 swapFromAddressInfo . address
535543 ) {
536- if ( settingsPersistAtom . swapBatchApproveAndSwap ) {
544+ if ( isBatchTransfer ) {
537545 try {
538546 setSwapBuildTxFetching ( true ) ;
539547 let approvesInfo : IApproveInfo [ ] = [ ] ;
@@ -569,80 +577,18 @@ export function useSwapBuildTx() {
569577 }
570578 const createBuildTxRes = await createBuildTx ( ) ;
571579 if ( createBuildTxRes ) {
572- if (
573- SwapBuildUseMultiplePopoversNetworkIds . includes (
574- fromToken . networkId ,
575- )
576- ) {
577- await navigationToSendConfirm ( {
578- approvesInfo : [ approvesInfo [ 0 ] ] ,
579- isInternalSwap : true ,
580- onSuccess : async ( data : ISendTxOnSuccessData [ ] ) => {
581- if ( approvesInfo . length > 1 ) {
582- await navigationToSendConfirm ( {
583- approvesInfo : [ approvesInfo [ 1 ] ] ,
584- // tron network does not support use pre fee info
585- feeInfo :
586- SwapBuildUseMultiplePopoversNetworkIds . includes (
587- fromToken . networkId ,
588- )
589- ? undefined
590- : data ?. [ 0 ] ?. feeInfo ,
591- isInternalSwap : true ,
592- onSuccess : async ( dataRes : ISendTxOnSuccessData [ ] ) => {
593- await navigationToSendConfirm ( {
594- transfersInfo : createBuildTxRes . transferInfo
595- ? [ createBuildTxRes . transferInfo ]
596- : undefined ,
597- encodedTx : createBuildTxRes . encodedTx ,
598- feeInfo :
599- SwapBuildUseMultiplePopoversNetworkIds . includes (
600- fromToken . networkId ,
601- )
602- ? undefined
603- : dataRes ?. [ 0 ] ?. feeInfo ,
604- swapInfo : createBuildTxRes . swapInfo ,
605- isInternalSwap : true ,
606- onSuccess : handleBuildTxSuccess ,
607- onCancel : cancelBuildTx ,
608- } ) ;
609- } ,
610- onCancel : cancelBuildTx ,
611- } ) ;
612- } else {
613- await navigationToSendConfirm ( {
614- transfersInfo : createBuildTxRes . transferInfo
615- ? [ createBuildTxRes . transferInfo ]
616- : undefined ,
617- encodedTx : createBuildTxRes . encodedTx ,
618- swapInfo : createBuildTxRes . swapInfo ,
619- feeInfo :
620- SwapBuildUseMultiplePopoversNetworkIds . includes (
621- fromToken . networkId ,
622- )
623- ? undefined
624- : data ?. [ 0 ] ?. feeInfo ,
625- isInternalSwap : true ,
626- onSuccess : handleBuildTxSuccess ,
627- onCancel : cancelBuildTx ,
628- } ) ;
629- }
630- } ,
631- onCancel : cancelBuildTx ,
632- } ) ;
633- } else {
634- await navigationToSendConfirm ( {
635- isInternalSwap : true ,
636- transfersInfo : createBuildTxRes . transferInfo
637- ? [ createBuildTxRes . transferInfo ]
638- : undefined ,
639- encodedTx : createBuildTxRes . encodedTx ,
640- swapInfo : createBuildTxRes . swapInfo ,
641- approvesInfo,
642- onSuccess : handleBuildTxSuccess ,
643- onCancel : cancelBuildTx ,
644- } ) ;
645- }
580+ await navigationToSendConfirm ( {
581+ isInternalSwap : true ,
582+ transfersInfo : createBuildTxRes . transferInfo
583+ ? [ createBuildTxRes . transferInfo ]
584+ : undefined ,
585+ encodedTx : createBuildTxRes . encodedTx ,
586+ swapInfo : createBuildTxRes . swapInfo ,
587+ approvesInfo,
588+ onSuccess : handleBuildTxSuccess ,
589+ onCancel : cancelBuildTx ,
590+ } ) ;
591+
646592 void syncRecentTokenPairs ( {
647593 swapFromToken : fromToken ,
648594 swapToToken : toToken ,
@@ -723,16 +669,16 @@ export function useSwapBuildTx() {
723669 swapFromAddressInfo . networkId ,
724670 swapFromAddressInfo . accountInfo ?. account ?. id ,
725671 swapFromAddressInfo . address ,
726- settingsPersistAtom . swapBatchApproveAndSwap ,
672+ isBatchTransfer ,
727673 setSwapBuildTxFetching ,
728674 createBuildTx ,
675+ navigationToSendConfirm ,
676+ cancelBuildTx ,
729677 syncRecentTokenPairs ,
730678 slippageItem . value ,
731679 isFirstTimeSwap ,
732680 pageType ,
733681 setPersistSettings ,
734- navigationToSendConfirm ,
735- cancelBuildTx ,
736682 handleBuildTxSuccess ,
737683 setSwapShouldRefreshQuote ,
738684 setInAppNotificationAtom ,
0 commit comments