diff --git a/programs/bets/src/instructions/close_bet.rs b/programs/bets/src/instructions/close_bet.rs index afa79f6..7b0b7b2 100644 --- a/programs/bets/src/instructions/close_bet.rs +++ b/programs/bets/src/instructions/close_bet.rs @@ -9,6 +9,10 @@ pub fn close(ctx: Context, winner:Pubkey, userid:String)->Result<()>{ bet_vault.owner == winner || bet_vault.joiner == winner || bet_vault.owner_id == userid || bet_vault.joiner_id == userid, BettingError::InvalidWinner ); + + let bets_list = &mut ctx.accounts.bets_list; + // Remove the bet_vault public key from the list + bets_list.bets.retain(|&bet| bet != bet_vault.key()); Ok(()) } @@ -19,7 +23,7 @@ pub struct CloseBet<'info>{ #[account(mut)] pub bets_list: Account<'info, BetsList>, - #[account(mut)] + #[account(mut, close=winner)] pub bet_vault: Account<'info, BetVault>, #[account(mut)]