Skip to content

Commit bffa377

Browse files
committed
feat: reset team on start_refund
1 parent 7679535 commit bffa377

File tree

1 file changed

+17
-2
lines changed
  • pallets/pallet-bonded-coins/src

1 file changed

+17
-2
lines changed

pallets/pallet-bonded-coins/src/lib.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,7 @@ pub mod pallet {
484484

485485
let pool_details = Pools::<T>::get(&pool_id).ok_or(Error::<T>::PoolUnknown)?;
486486

487+
ensure!(pool_details.state.is_live(), Error::<T>::PoolNotLive);
487488
ensure!(pool_details.is_manager(&who), Error::<T>::NoPermission);
488489
ensure!(pool_details.state.is_live(), Error::<T>::PoolNotLive);
489490

@@ -1430,8 +1431,10 @@ pub mod pallet {
14301431
Error::<T>::NothingToRefund
14311432
);
14321433

1433-
let has_holders = pool_details
1434-
.bonded_currencies
1434+
// cloning here lets us avoid cloning the pool details later
1435+
let bonded_currencies = pool_details.bonded_currencies.clone();
1436+
1437+
let has_holders = bonded_currencies
14351438
.iter()
14361439
.any(|asset_id| T::Fungibles::total_issuance(asset_id.clone()) > FungiblesBalanceOf::<T>::zero());
14371440
// no token holders to refund
@@ -1442,6 +1445,18 @@ pub mod pallet {
14421445
new_pool_details.state.start_refund();
14431446
Pools::<T>::set(&pool_id, Some(new_pool_details));
14441447

1448+
// reset team on currencies to avoid unexpected burns etc.
1449+
let pool_account = pool_id.clone().into();
1450+
for asset_id in bonded_currencies {
1451+
T::Fungibles::reset_team(
1452+
asset_id,
1453+
pool_account.clone(),
1454+
pool_account.clone(),
1455+
pool_account.clone(),
1456+
pool_account.clone(),
1457+
)?;
1458+
}
1459+
14451460
Self::deposit_event(Event::RefundingStarted { id: pool_id });
14461461

14471462
Ok(n_currencies)

0 commit comments

Comments
 (0)