From d8db4044530e842dd2e0b4caca77581ce0ba5a61 Mon Sep 17 00:00:00 2001 From: Sewmina Date: Wed, 21 May 2025 10:57:01 +0000 Subject: [PATCH 1/2] fixes on close --- programs/bets/src/instructions/close_bet.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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)] From cc73ac1febb8e152cef6a0823e4d145590363995 Mon Sep 17 00:00:00 2001 From: Sewmina Date: Wed, 21 May 2025 11:00:43 +0000 Subject: [PATCH 2/2] clear func --- .../bets/src/instructions/clear_bets_list.rs | 22 +++++++++++++++++++ programs/bets/src/instructions/mod.rs | 5 ++++- programs/bets/src/lib.rs | 4 ++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 programs/bets/src/instructions/clear_bets_list.rs diff --git a/programs/bets/src/instructions/clear_bets_list.rs b/programs/bets/src/instructions/clear_bets_list.rs new file mode 100644 index 0000000..033c74a --- /dev/null +++ b/programs/bets/src/instructions/clear_bets_list.rs @@ -0,0 +1,22 @@ +use anchor_lang::prelude::*; +use crate::*; + +pub fn clear(ctx: Context) -> Result<()> { + let bets_list = &mut ctx.accounts.bets_list; + bets_list.bets.clear(); + msg!("Cleared all bets from the list!"); + Ok(()) +} + +#[derive(Accounts)] +pub struct ClearBetsList<'info> { + #[account( + mut, + seeds = [b"bets_list"], + bump + )] + pub bets_list: Account<'info, BetsList>, + + #[account(mut)] + pub payer: Signer<'info>, +} \ No newline at end of file diff --git a/programs/bets/src/instructions/mod.rs b/programs/bets/src/instructions/mod.rs index 40f4def..f4e21ae 100644 --- a/programs/bets/src/instructions/mod.rs +++ b/programs/bets/src/instructions/mod.rs @@ -14,4 +14,7 @@ pub mod refund_bet; pub use refund_bet::*; pub mod deduct_fees; -pub use deduct_fees::*; \ No newline at end of file +pub use deduct_fees::*; + +pub mod clear_bets_list; +pub use clear_bets_list::*; \ No newline at end of file diff --git a/programs/bets/src/lib.rs b/programs/bets/src/lib.rs index f3c169c..3594b17 100644 --- a/programs/bets/src/lib.rs +++ b/programs/bets/src/lib.rs @@ -38,4 +38,8 @@ pub mod bets { pub fn deduct_fees(ctx:Context, winner:Pubkey, userid:String)->Result<()>{ deduct_fees::deduct(ctx, winner, userid) } + + pub fn clear_bets_list(ctx: Context) -> Result<()> { + clear_bets_list::clear(ctx) + } }