Confirm session deletion
This commit is contained in:
34
src/app.rs
34
src/app.rs
@@ -65,6 +65,8 @@ pub(crate) struct App {
|
||||
drafts: HashMap<i32, String>,
|
||||
/// Session whose quick-actions menu is open.
|
||||
session_menu: Option<i32>,
|
||||
/// Session waiting for explicit confirmation before deletion.
|
||||
pending_session_delete: Option<i32>,
|
||||
/// Session being renamed, with the in-progress title.
|
||||
session_rename: Option<(i32, String)>,
|
||||
/// Projects whose archived sessions are expanded in the sidebar.
|
||||
@@ -255,7 +257,8 @@ pub(crate) enum Message {
|
||||
CreateSession(i32),
|
||||
DiscardSession(i32),
|
||||
SelectSession(i32, i32),
|
||||
DeleteSession(i32),
|
||||
RequestDeleteSession(i32),
|
||||
ConfirmDeleteSession,
|
||||
OpenSessionMenu(i32),
|
||||
StartRenameSession(i32),
|
||||
SessionTitleChanged(String),
|
||||
@@ -327,6 +330,7 @@ impl App {
|
||||
selected_session: None,
|
||||
drafts,
|
||||
session_menu: None,
|
||||
pending_session_delete: None,
|
||||
session_rename: None,
|
||||
expanded_archives: HashSet::new(),
|
||||
sidebar_drag: false,
|
||||
@@ -446,6 +450,7 @@ impl App {
|
||||
selected_session: None,
|
||||
drafts: HashMap::new(),
|
||||
session_menu: None,
|
||||
pending_session_delete: None,
|
||||
session_rename: None,
|
||||
expanded_archives: HashSet::new(),
|
||||
sidebar_drag: false,
|
||||
@@ -556,7 +561,9 @@ impl App {
|
||||
}
|
||||
}
|
||||
Message::DismissPanel => {
|
||||
if self.pending_a2ui_dismissal.is_some() {
|
||||
if self.pending_session_delete.is_some() {
|
||||
self.pending_session_delete = None;
|
||||
} else if self.pending_a2ui_dismissal.is_some() {
|
||||
self.pending_a2ui_dismissal = None;
|
||||
} else if self.session_rename.is_some() || self.session_menu.is_some() {
|
||||
self.session_rename = None;
|
||||
@@ -1351,7 +1358,28 @@ impl App {
|
||||
}
|
||||
}
|
||||
}
|
||||
Message::DeleteSession(session_id) => {
|
||||
Message::RequestDeleteSession(session_id) => {
|
||||
if self.generating && self.selected_session == Some(session_id) {
|
||||
self.error =
|
||||
Some("Stop the active generation before deleting its session.".into());
|
||||
return Task::none();
|
||||
}
|
||||
if self
|
||||
.projects
|
||||
.iter()
|
||||
.flat_map(|project| &project.sessions)
|
||||
.any(|session| session.id == session_id)
|
||||
{
|
||||
self.pending_session_delete = Some(session_id);
|
||||
self.session_menu = None;
|
||||
self.session_rename = None;
|
||||
self.error = None;
|
||||
}
|
||||
}
|
||||
Message::ConfirmDeleteSession => {
|
||||
let Some(session_id) = self.pending_session_delete.take() else {
|
||||
return Task::none();
|
||||
};
|
||||
if self.generating && self.selected_session == Some(session_id) {
|
||||
self.error =
|
||||
Some("Stop the active generation before deleting its session.".into());
|
||||
|
||||
Reference in New Issue
Block a user