@@ -703,14 +703,17 @@ pub mod module {
703
703
recipient : Location ,
704
704
dest_weight_limit : WeightLimit ,
705
705
) -> 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
+ ] ) )
714
717
}
715
718
716
719
fn transfer_to_reserve (
@@ -722,6 +725,7 @@ pub mod module {
722
725
) -> Result < Xcm < T :: RuntimeCall > , DispatchError > {
723
726
Ok ( Xcm ( vec ! [
724
727
WithdrawAsset ( assets. clone( ) ) ,
728
+ SetFeesMode { jit_withdraw: true } ,
725
729
InitiateReserveWithdraw {
726
730
assets: All . into( ) ,
727
731
reserve: reserve. clone( ) ,
@@ -753,6 +757,7 @@ pub mod module {
753
757
if !use_teleport {
754
758
Ok ( Xcm ( vec ! [
755
759
WithdrawAsset ( assets) ,
760
+ SetFeesMode { jit_withdraw: true } ,
756
761
InitiateReserveWithdraw {
757
762
assets: All . into( ) ,
758
763
reserve: reserve. clone( ) ,
@@ -772,6 +777,7 @@ pub mod module {
772
777
} else {
773
778
Ok ( Xcm ( vec ! [
774
779
WithdrawAsset ( assets) ,
780
+ SetFeesMode { jit_withdraw: true } ,
775
781
InitiateReserveWithdraw {
776
782
assets: All . into( ) ,
777
783
reserve: reserve. clone( ) ,
@@ -873,13 +879,17 @@ pub mod module {
873
879
Pallet :: < T > :: transfer_kind ( T :: ReserveProvider :: reserve ( & asset) , & dest)
874
880
{
875
881
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
+ ] ) ,
881
890
ToReserve | ToNonReserve => Xcm ( vec ! [
882
891
WithdrawAsset ( Assets :: from( asset) ) ,
892
+ SetFeesMode { jit_withdraw: true } ,
883
893
InitiateReserveWithdraw {
884
894
assets: All . into( ) ,
885
895
// `dest` is always (equal to) `reserve` in both cases
@@ -936,13 +946,17 @@ pub mod module {
936
946
let reserve_location = Pallet :: < T > :: get_reserve_location ( & assets, fee_item) ;
937
947
if let Ok ( ( transfer_kind, dest, _, reserve) ) = Pallet :: < T > :: transfer_kind ( reserve_location, & dest) {
938
948
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
+ ] ) ,
944
957
ToReserve | ToNonReserve => Xcm ( vec ! [
945
958
WithdrawAsset ( assets) ,
959
+ SetFeesMode { jit_withdraw: true } ,
946
960
InitiateReserveWithdraw {
947
961
assets: All . into( ) ,
948
962
// `dest` is always (equal to) `reserve` in both cases
0 commit comments