Skip to content

Commit

Permalink
original caller merge fix
Browse files Browse the repository at this point in the history
  • Loading branch information
psorinionut committed Apr 23, 2024
1 parent 27085fb commit e993235
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 9 deletions.
3 changes: 2 additions & 1 deletion dex/farm-with-locked-rewards/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,8 @@ pub trait Farm:
}

fn merge_and_update_farm_tokens(&self, orig_caller: ManagedAddress) -> EsdtTokenPayment {
let mut output_attributes = self.merge_and_return_attributes::<NoMintWrapper<Self>>();
let mut output_attributes =
self.merge_and_return_attributes::<NoMintWrapper<Self>>(&orig_caller);
output_attributes.original_owner = orig_caller;

let new_token_amount = output_attributes.get_total_supply();
Expand Down
8 changes: 5 additions & 3 deletions dex/farm/src/base_functions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -182,13 +182,15 @@ pub trait BaseFunctionsModule:
}
}

fn merge_and_return_attributes<FC: FarmContract<FarmSc = Self>>(&self) -> FC::AttributesType {
fn merge_and_return_attributes<FC: FarmContract<FarmSc = Self>>(
&self,
orig_caller: &ManagedAddress,
) -> FC::AttributesType {
let payments = self.get_non_empty_payments();
let token_mapper = self.farm_token();
token_mapper.require_all_same_token(&payments);

let caller = self.blockchain().get_caller();
FC::check_and_update_user_farm_position(self, &caller, &payments);
FC::check_and_update_user_farm_position(self, orig_caller, &payments);

self.merge_from_payments_and_burn(payments, &token_mapper)
}
Expand Down
2 changes: 1 addition & 1 deletion dex/farm/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ pub trait Farm:
}

fn merge_and_update_farm_tokens(&self, orig_caller: ManagedAddress) -> EsdtTokenPayment {
let mut output_attributes = self.merge_and_return_attributes::<Wrapper<Self>>();
let mut output_attributes = self.merge_and_return_attributes::<Wrapper<Self>>(&orig_caller);
output_attributes.original_owner = orig_caller;

let new_token_amount = output_attributes.get_total_supply();
Expand Down
11 changes: 7 additions & 4 deletions farm-staking/farm-staking/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -126,21 +126,24 @@ pub trait FarmStaking:
}

fn merge_and_update_farm_tokens(&self, orig_caller: ManagedAddress) -> EsdtTokenPayment {
let mut output_attributes = self.merge_farm_tokens::<FarmStakingWrapper<Self>>();
let mut output_attributes =
self.merge_farm_tokens::<FarmStakingWrapper<Self>>(&orig_caller);
output_attributes.original_owner = orig_caller;

let new_token_amount = output_attributes.get_total_supply();
self.farm_token()
.nft_create(new_token_amount, &output_attributes)
}

fn merge_farm_tokens<FC: FarmContract<FarmSc = Self>>(&self) -> FC::AttributesType {
fn merge_farm_tokens<FC: FarmContract<FarmSc = Self>>(
&self,
orig_caller: &ManagedAddress,
) -> FC::AttributesType {
let payments = self.get_non_empty_payments();
let token_mapper = self.farm_token();
token_mapper.require_all_same_token(&payments);

let caller = self.blockchain().get_caller();
FC::check_and_update_user_farm_position(self, &caller, &payments);
FC::check_and_update_user_farm_position(self, orig_caller, &payments);

self.merge_from_payments_and_burn(payments, &token_mapper)
}
Expand Down

0 comments on commit e993235

Please sign in to comment.