use {
super::Handlers,
crate::ui::menus::{PoolSearchModeMenu, SearchMenu, search::SearchMenu as _},
miette::IntoDiagnostic,
};
impl Handlers {
pub async fn handle_search(&self) -> miette::Result<()> {
let selection = match SearchMenu::select("What would you like to search for?").ask() {
Ok(sel) => sel,
Err(_) if self.was_interrupted() => return Ok(()),
Err(e) => return Err(e),
};
match selection.value {
SearchMenu::Posts => self.ui.search_posts().await.into_diagnostic()?,
SearchMenu::Pools => self.handle_pool_search().await?,
SearchMenu::Back => {}
}
Ok(())
}
pub async fn handle_pool_search(&self) -> miette::Result<()> {
let pool_mode =
match PoolSearchModeMenu::select("Which search mode would you like to use?").ask() {
Ok(sel) => sel,
Err(_) if self.was_interrupted() => return Ok(()),
Err(e) => return Err(e),
};
match pool_mode.value {
PoolSearchModeMenu::Simple => self.ui.search_pools().await.into_diagnostic()?,
PoolSearchModeMenu::Advanced => self.ui.search_pools_adv().await.into_diagnostic()?,
}
Ok(())
}
}