This paves the way to do per-directory approval settings (https://github.com/openai/codex/pull/1912). This also lets us pass in a Config/ChatWidgetArgs into onboarding which can then mutate it and emit the ChatWidgetArgs it wants at the end which may be modified by the said approval settings. <img width="1180" height="428" alt="CleanShot 2025-08-06 at 19 30 55" src="https://github.com/user-attachments/assets/4dcfda42-0f5e-4b6d-a16d-2597109cc31c" />
23 lines
571 B
Rust
23 lines
571 B
Rust
use std::sync::mpsc::Sender;
|
|
|
|
use crate::app_event::AppEvent;
|
|
|
|
#[derive(Clone, Debug)]
|
|
pub(crate) struct AppEventSender {
|
|
pub app_event_tx: Sender<AppEvent>,
|
|
}
|
|
|
|
impl AppEventSender {
|
|
pub(crate) fn new(app_event_tx: Sender<AppEvent>) -> Self {
|
|
Self { app_event_tx }
|
|
}
|
|
|
|
/// Send an event to the app event channel. If it fails, we swallow the
|
|
/// error and log it.
|
|
pub(crate) fn send(&self, event: AppEvent) {
|
|
if let Err(e) = self.app_event_tx.send(event) {
|
|
tracing::error!("failed to send event: {e}");
|
|
}
|
|
}
|
|
}
|