Reopen the last project with a focused draft chat
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user