@@ -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