httpman 0.1.5

A fast, modern HTTP client with tab management and request persistence
Documentation
use crate::{storage::TabAction, TabCtx};

pub struct RequestList;

impl RequestList {
    pub fn new() -> Self {
        Self
    }

    pub fn render(&self, ui: &mut egui::Ui, ctx: &TabCtx) -> anyhow::Result<Option<TabAction>> {
        let mut storage = ctx.storage_write()?;
        let items = storage.load_list(ctx)?;

        let mut action = None;
        for item in items {
            if let Some(item_action) = item.render_tree(ui, ctx) {
                action = Some(item_action);
            }
        }

        // Add root-level context menu
        ui.allocate_response(ui.available_size(), egui::Sense::hover())
            .context_menu(|ui| {
                if ui.button("📁 New Folder").clicked() {
                    action = Some(TabAction::CreateFolder {
                        parent_path: storage.saved_folder(),
                    });
                    ui.close_menu();
                }
            });

        Ok(action)
    }
}