Skip to content

Commit 1ad53b2

Browse files
committed
feat: reset team on start_refund
1 parent cfd6b28 commit 1ad53b2

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
@@ -393,6 +393,7 @@ pub mod pallet {
393393

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

396+
ensure!(pool_details.state.is_live(), Error::<T>::PoolNotLive);
396397
ensure!(pool_details.is_manager(&who), Error::<T>::NoPermission);
397398

398399
let asset_id = pool_details
@@ -958,8 +959,10 @@ pub mod pallet {
958959
Error::<T>::NothingToRefund
959960
);
960961

961-
let has_holders = pool_details
962-
.bonded_currencies
962+
// cloning here lets us avoid cloning the pool details later
963+
let bonded_currencies = pool_details.bonded_currencies.clone();
964+
965+
let has_holders = bonded_currencies
963966
.iter()
964967
.any(|asset_id| T::Fungibles::total_issuance(asset_id.clone()) > FungiblesBalanceOf::<T>::zero());
965968
// no token holders to refund
@@ -970,6 +973,18 @@ pub mod pallet {
970973
new_pool_details.state.start_refund();
971974
Pools::<T>::set(&pool_id, Some(new_pool_details));
972975

976+
// reset team on currencies to avoid unexpected burns etc.
977+
let pool_account = pool_id.clone().into();
978+
for asset_id in bonded_currencies {
979+
T::Fungibles::reset_team(
980+
asset_id,
981+
pool_account.clone(),
982+
pool_account.clone(),
983+
pool_account.clone(),
984+
pool_account.clone(),
985+
)?;
986+
}
987+
973988
Self::deposit_event(Event::RefundingStarted { id: pool_id });
974989

975990
Ok(n_currencies)

0 commit comments

Comments
 (0)