Reopen the last project with a focused draft chat

This commit is contained in:
Georg Bauer
2026-07-25 23:52:39 +02:00
parent 4408ed8b26
commit e44680541d
8 changed files with 71 additions and 13 deletions

View File

@@ -47,7 +47,7 @@ impl App {
match database.create_project(name, path) {
Ok(project) => {
self.selected_project = Some(project.id);
self.remember_project(project.id);
self.selected_session = None;
self.pending_project_path = None;
self.project_name_input.clear();
@@ -70,7 +70,7 @@ impl App {
}
let title = draft_title(&self.projects, project_id);
self.drafts.entry(project_id).or_insert(title);
self.selected_project = Some(project_id);
self.remember_project(project_id);
self.selected_session = None;
self.conversation.clear();
self.composer.clear();
@@ -104,12 +104,26 @@ impl App {
.ok_or_else(|| "The project database is unavailable.".to_owned())?;
let session = database.create_session(project_id, &title)?;
self.drafts.remove(&project_id);
self.selected_project = Some(project_id);
self.remember_project(project_id);
self.selected_session = Some(session.id);
self.reload_projects();
Ok(session.id)
}
/// Selects a project and stores it as the one to reopen on the next launch.
pub(super) fn remember_project(&mut self, project_id: i32) {
self.selected_project = Some(project_id);
if self.preferences.last_project_id == Some(project_id) {
return;
}
self.preferences.last_project_id = Some(project_id);
if let Some(database) = &mut self.database
&& let Err(error) = database.set_last_project(Some(project_id))
{
self.error = Some(error);
}
}
/// True when the sidebar row for this project's draft is the active chat.
pub(super) fn draft_selected(&self, project_id: i32) -> bool {
self.selected_project == Some(project_id) && self.selected_session.is_none()
@@ -125,7 +139,7 @@ impl App {
}
}
fn draft_title(projects: &[ProjectWithSessions], project_id: i32) -> String {
pub(super) fn draft_title(projects: &[ProjectWithSessions], project_id: i32) -> String {
let stored = projects
.iter()
.find(|item| item.project.id == project_id)