@@ -703,14 +703,17 @@ pub mod module {
703703 recipient : Location ,
704704 dest_weight_limit : WeightLimit ,
705705 ) -> Result < Xcm < T :: RuntimeCall > , DispatchError > {
706- Ok ( Xcm ( vec ! [ TransferReserveAsset {
707- assets: assets. clone( ) ,
708- dest: dest. clone( ) ,
709- xcm: Xcm ( vec![
710- Self :: buy_execution( fee, & dest, dest_weight_limit) ?,
711- Self :: deposit_asset( recipient, assets. len( ) as u32 ) ,
712- ] ) ,
713- } ] ) )
706+ Ok ( Xcm ( vec ! [
707+ SetFeesMode { jit_withdraw: true } ,
708+ TransferReserveAsset {
709+ assets: assets. clone( ) ,
710+ dest: dest. clone( ) ,
711+ xcm: Xcm ( vec![
712+ Self :: buy_execution( fee, & dest, dest_weight_limit) ?,
713+ Self :: deposit_asset( recipient, assets. len( ) as u32 ) ,
714+ ] ) ,
715+ } ,
716+ ] ) )
714717 }
715718
716719 fn transfer_to_reserve (
@@ -722,6 +725,7 @@ pub mod module {
722725 ) -> Result < Xcm < T :: RuntimeCall > , DispatchError > {
723726 Ok ( Xcm ( vec ! [
724727 WithdrawAsset ( assets. clone( ) ) ,
728+ SetFeesMode { jit_withdraw: true } ,
725729 InitiateReserveWithdraw {
726730 assets: All . into( ) ,
727731 reserve: reserve. clone( ) ,
@@ -753,6 +757,7 @@ pub mod module {
753757 if !use_teleport {
754758 Ok ( Xcm ( vec ! [
755759 WithdrawAsset ( assets) ,
760+ SetFeesMode { jit_withdraw: true } ,
756761 InitiateReserveWithdraw {
757762 assets: All . into( ) ,
758763 reserve: reserve. clone( ) ,
@@ -772,6 +777,7 @@ pub mod module {
772777 } else {
773778 Ok ( Xcm ( vec ! [
774779 WithdrawAsset ( assets) ,
780+ SetFeesMode { jit_withdraw: true } ,
775781 InitiateReserveWithdraw {
776782 assets: All . into( ) ,
777783 reserve: reserve. clone( ) ,
@@ -873,13 +879,17 @@ pub mod module {
873879 Pallet :: < T > :: transfer_kind ( T :: ReserveProvider :: reserve ( & asset) , & dest)
874880 {
875881 let mut msg = match transfer_kind {
876- SelfReserveAsset => Xcm ( vec ! [ TransferReserveAsset {
877- assets: vec![ asset] . into( ) ,
878- dest,
879- xcm: Xcm ( vec![ ] ) ,
880- } ] ) ,
882+ SelfReserveAsset => Xcm ( vec ! [
883+ SetFeesMode { jit_withdraw: true } ,
884+ TransferReserveAsset {
885+ assets: vec![ asset] . into( ) ,
886+ dest,
887+ xcm: Xcm ( vec![ ] ) ,
888+ } ,
889+ ] ) ,
881890 ToReserve | ToNonReserve => Xcm ( vec ! [
882891 WithdrawAsset ( Assets :: from( asset) ) ,
892+ SetFeesMode { jit_withdraw: true } ,
883893 InitiateReserveWithdraw {
884894 assets: All . into( ) ,
885895 // `dest` is always (equal to) `reserve` in both cases
@@ -936,13 +946,17 @@ pub mod module {
936946 let reserve_location = Pallet :: < T > :: get_reserve_location ( & assets, fee_item) ;
937947 if let Ok ( ( transfer_kind, dest, _, reserve) ) = Pallet :: < T > :: transfer_kind ( reserve_location, & dest) {
938948 let mut msg = match transfer_kind {
939- SelfReserveAsset => Xcm ( vec ! [ TransferReserveAsset {
940- assets,
941- dest,
942- xcm: Xcm ( vec![ ] ) ,
943- } ] ) ,
949+ SelfReserveAsset => Xcm ( vec ! [
950+ SetFeesMode { jit_withdraw: true } ,
951+ TransferReserveAsset {
952+ assets,
953+ dest,
954+ xcm: Xcm ( vec![ ] ) ,
955+ } ,
956+ ] ) ,
944957 ToReserve | ToNonReserve => Xcm ( vec ! [
945958 WithdrawAsset ( assets) ,
959+ SetFeesMode { jit_withdraw: true } ,
946960 InitiateReserveWithdraw {
947961 assets: All . into( ) ,
948962 // `dest` is always (equal to) `reserve` in both cases
0 commit comments