Skip to content

Commit 23c8363

Browse files
authored
add missing SetFeesMode instruction in xtokens (#1006)
1 parent 13ff336 commit 23c8363

File tree

1 file changed

+32
-18
lines changed

1 file changed

+32
-18
lines changed

xtokens/src/lib.rs

+32-18
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)