use crate::{errors::AntegenThreadError, state::ThreadConfig, *};
use anchor_lang::prelude::*;
#[derive(Accounts)]
pub struct ThreadDelete<'info> {
#[account(
mut,
constraint = admin.key() == config.admin @ AntegenThreadError::InvalidConfigAdmin,
)]
pub admin: Signer<'info>,
#[account(
seeds = [SEED_CONFIG],
bump = config.bump,
)]
pub config: Account<'info, ThreadConfig>,
#[account(mut)]
pub thread: UncheckedAccount<'info>,
}
pub fn thread_delete(ctx: Context<ThreadDelete>) -> Result<()> {
let admin = &ctx.accounts.admin;
let thread = &ctx.accounts.thread;
let thread_lamports = thread.lamports();
**thread.try_borrow_mut_lamports()? -= thread_lamports;
**admin.try_borrow_mut_lamports()? += thread_lamports;
thread.try_borrow_mut_data()?.fill(0);
msg!("Deleting thread (admin)");
Ok(())
}