undo_reject_toast.rs

 1use action_log::ActionLog;
 2use gpui::{App, Entity};
 3use notifications::status_toast::StatusToast;
 4use ui::prelude::*;
 5use workspace::Workspace;
 6
 7pub fn show_undo_reject_toast(
 8    workspace: &mut Workspace,
 9    action_log: Entity<ActionLog>,
10    cx: &mut App,
11) {
12    let action_log_weak = action_log.downgrade();
13    let status_toast = StatusToast::new("Agent Changes Rejected", cx, move |this, _cx| {
14        this.icon(
15            Icon::new(IconName::Undo)
16                .size(IconSize::Small)
17                .color(Color::Muted),
18        )
19        .action("Undo", move |_window, cx| {
20            if let Some(action_log) = action_log_weak.upgrade() {
21                action_log
22                    .update(cx, |action_log, cx| action_log.undo_last_reject(cx))
23                    .detach();
24            }
25        })
26        .dismiss_button(true)
27    });
28    workspace.toggle_status_toast(status_toast, cx);
29}