use ratatui::prelude::Rect;
use ratatui::text::Line;
use crate::logic::sandbox::SandboxInfo;
use crate::state::modal::{
CascadeMode, DependencyInfo, PackageFileInfo, PreflightAction, PreflightHeaderChips,
PreflightSummaryData, PreflightTab, ServiceImpact,
};
use crate::state::{AppState, PackageItem};
use std::collections::{HashMap, HashSet};
use super::super::tabs::{
SandboxTabContext, render_deps_tab, render_files_tab, render_sandbox_tab, render_services_tab,
render_summary_tab,
};
#[allow(clippy::too_many_arguments)]
pub fn render_tab_content(
app: &AppState,
tab: PreflightTab,
items: &[PackageItem],
action: PreflightAction,
summary: Option<&PreflightSummaryData>,
header_chips: &PreflightHeaderChips,
dependency_info: &[DependencyInfo],
dep_selected: &mut usize,
dep_tree_expanded: &HashSet<String>,
deps_error: Option<&String>,
file_info: &[PackageFileInfo],
file_selected: &mut usize,
file_tree_expanded: &HashSet<String>,
files_error: Option<&String>,
service_info: &[ServiceImpact],
service_selected: &mut usize,
services_loaded: bool,
services_error: Option<&String>,
sandbox_info: &[SandboxInfo],
sandbox_selected: &mut usize,
sandbox_tree_expanded: &HashSet<String>,
sandbox_loaded: bool,
sandbox_error: Option<&String>,
selected_optdepends: &HashMap<String, HashSet<String>>,
cascade_mode: CascadeMode,
content_rect: Rect,
) -> Vec<Line<'static>> {
match tab {
PreflightTab::Summary => render_summary_tab(
app,
items,
action,
summary,
header_chips,
dependency_info,
cascade_mode,
content_rect,
),
PreflightTab::Deps => render_deps_tab(
app,
items,
action,
dependency_info,
dep_selected,
dep_tree_expanded,
deps_error,
content_rect,
),
PreflightTab::Files => render_files_tab(
app,
items,
file_info,
file_selected,
file_tree_expanded,
files_error,
content_rect,
),
PreflightTab::Services => render_services_tab(
app,
service_info,
service_selected,
services_loaded,
services_error,
content_rect,
),
PreflightTab::Sandbox => {
let ctx = SandboxTabContext {
items,
sandbox_info,
sandbox_tree_expanded,
sandbox_loaded,
sandbox_error,
selected_optdepends,
content_rect,
};
render_sandbox_tab(app, &ctx, sandbox_selected)
}
}
}