Skip to content

Commit

Permalink
Merge pull request #457 from andromedaprotocol/joe/splitter-adjustment
Browse files Browse the repository at this point in the history
refactor: Splitter Adjustments
  • Loading branch information
joemonem authored May 20, 2024
2 parents dc09dc3 + bc27e57 commit 951d7c4
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 21 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Fixed

- Splitter: avoid zero send messages, owner updates lock any time [(#457)](https://github.com/andromedaprotocol/andromeda-core/pull/457)

### Removed

- Schemas are no longer tracked [(#430)](https://github.com/andromedaprotocol/andromeda-core/pull/430)
41 changes: 20 additions & 21 deletions contracts/finance/andromeda-splitter/src/contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -168,20 +168,22 @@ fn execute_send(ctx: ExecuteContext) -> Result<Response, ContractError> {
let recipient_percent = recipient_addr.percent;
let mut vec_coin: Vec<Coin> = Vec::new();
for (i, coin) in info.funds.clone().iter().enumerate() {
let mut recip_coin: Coin = coin.clone();
recip_coin.amount = coin.amount * recipient_percent;
remainder_funds[i].amount = remainder_funds[i].amount.checked_sub(recip_coin.amount)?;
vec_coin.push(recip_coin.clone());
amp_funds.push(recip_coin);
let amount_owed = coin.amount.mul_floor(recipient_percent);
if !amount_owed.is_zero() {
let mut recip_coin: Coin = coin.clone();
recip_coin.amount = amount_owed;
remainder_funds[i].amount =
remainder_funds[i].amount.checked_sub(recip_coin.amount)?;
vec_coin.push(recip_coin.clone());
amp_funds.push(recip_coin);
}
}
if !vec_coin.is_empty() {
let amp_msg = recipient_addr
.recipient
.generate_amp_msg(&deps.as_ref(), Some(vec_coin))?;
pkt = pkt.add_message(amp_msg);
}

// let direct_message = recipient_addr
// .recipient
// .generate_direct_msg(&deps.as_ref(), vec_coin)?;
let amp_msg = recipient_addr
.recipient
.generate_amp_msg(&deps.as_ref(), Some(vec_coin))?;
pkt = pkt.add_message(amp_msg);
}
remainder_funds.retain(|x| x.amount > Uint128::zero());

Expand All @@ -197,8 +199,11 @@ fn execute_send(ctx: ExecuteContext) -> Result<Response, ContractError> {
})));
}
let kernel_address = ADOContract::default().get_kernel_address(deps.as_ref().storage)?;
let distro_msg = pkt.to_sub_msg(kernel_address, Some(amp_funds), 1)?;
msgs.push(distro_msg);

if !pkt.messages.is_empty() {
let distro_msg = pkt.to_sub_msg(kernel_address, Some(amp_funds), 1)?;
msgs.push(distro_msg);
}

Ok(Response::new()
.add_submessages(msgs)
Expand Down Expand Up @@ -259,12 +264,6 @@ fn execute_update_lock(

let mut splitter = SPLITTER.load(deps.storage)?;

// Can't call this function while the lock isn't expired

ensure!(
splitter.lock.is_expired(&env.block),
ContractError::ContractLocked {}
);
// Get current time
let current_time = Milliseconds::from_seconds(env.block.time.seconds());

Expand Down

0 comments on commit 951d7c4

Please sign in to comment.