use crate::ui::{Model, theme};
pub const HEADING: &str = "delete this conversation?";
pub const KEEP: &str = "keep";
pub const DELETE: &str = "delete";
pub const HINT: &str = "Enter deletes · Esc keeps";
pub fn render(ui: &mut egui::Ui, model: &mut Model, id: &str) {
let name = model.name_of(id);
let accent = theme::accent(theme::State::Error);
let mut answered = None;
egui::Frame::none()
.fill(theme::SURFACE)
.stroke(egui::Stroke::new(1.0, accent))
.rounding(theme::RADIUS)
.inner_margin(egui::Margin::symmetric(theme::space::S, theme::space::XS))
.show(ui, |ui| {
ui.horizontal(|ui| {
ui.label(egui::RichText::new(HEADING).color(accent));
ui.with_layout(egui::Layout::right_to_left(egui::Align::Center), |ui| {
ui.label(egui::RichText::new(HINT).small().color(theme::INK_WEAK));
});
});
ui.add(egui::Label::new(egui::RichText::new(&name).color(theme::INK)).wrap());
ui.horizontal(|ui| {
if theme::paint::tab(ui, KEEP, theme::INK_WEAK).clicked() {
answered = Some(false);
}
let delete = theme::paint::tab(ui, DELETE, accent);
crate::ui::act::tag(&delete, &[crate::verbs::DELETE_AGENT.word]);
if delete.clicked() {
answered = Some(true);
}
});
});
match answered {
Some(true) => model.post_delete(id),
Some(false) => model.spare(),
None => {}
}
}
pub fn keys(ctx: &egui::Context, model: &mut Model) {
let Some(id) = model.deleting.clone() else {
return;
};
let took = |key| ctx.input_mut(|i| i.consume_key(egui::Modifiers::NONE, key));
if took(egui::Key::Enter) {
model.post_delete(&id);
} else if took(egui::Key::Escape) {
model.spare();
}
}