ai-code-buddy 0.4.20

An AI-powered code review tool with elegant Bevy-based TUI
Documentation
use crate::core::review::Review;
use bevy::prelude::*;

#[derive(Debug, Clone, Resource)]
pub struct AnalysisWidgetState {
    pub is_analyzing: bool,
    pub progress: f64,
    pub current_file: String,
    pub review: Option<Review>,
    pub selected_issue: usize,
}

impl Default for AnalysisWidgetState {
    fn default() -> Self {
        Self {
            is_analyzing: false,
            progress: 0.0,
            current_file: String::new(),
            review: None,
            selected_issue: 0,
        }
    }
}

impl AnalysisWidgetState {
    pub fn start_analysis(&mut self) {
        self.is_analyzing = true;
        self.progress = 0.0;
        self.current_file.clear();
        self.review = None;
    }

    #[allow(dead_code)]
    pub fn update_progress(&mut self, progress: f64, current_file: String) {
        self.progress = progress;
        self.current_file = current_file;
    }

    pub fn complete_analysis(&mut self, review: Review) {
        self.is_analyzing = false;
        self.progress = 100.0;
        self.review = Some(review);
        self.selected_issue = 0;
    }

    pub fn move_issue_selection(&mut self, direction: i32) {
        if let Some(review) = &self.review {
            if !review.issues.is_empty() {
                let new_selection = (self.selected_issue as i32 + direction)
                    .max(0)
                    .min(review.issues.len() as i32 - 1)
                    as usize;
                self.selected_issue = new_selection;
            }
        }
    }
}