diff options
author | danimelchor <dmh672@gmail.com> | 2023-03-26 19:06:19 -0400 |
---|---|---|
committer | danimelchor <dmh672@gmail.com> | 2023-03-26 19:06:19 -0400 |
commit | a0777364bb2c4eb5111b3ab6017ea904999b56a0 (patch) | |
tree | 1b66ca5ae2c631514e34229a89cda1f7572f22fd | |
parent | c072e8c30663c2132ca09d9ce968d628c2566592 (diff) |
fixed
-rw-r--r-- | src/ui/all_tasks_page.rs | 10 | ||||
-rw-r--r-- | src/ui/mod.rs | 6 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/ui/all_tasks_page.rs b/src/ui/all_tasks_page.rs index b357dba..9d07d3b 100644 --- a/src/ui/all_tasks_page.rs +++ b/src/ui/all_tasks_page.rs @@ -88,6 +88,16 @@ impl AllTasksPage { } } + pub fn ensure_task_exists(&mut self) { + // Check that the current task still exists + if let Some(id) = self.current_id { + let any = self.visible_tasks().iter().any(|t| t.id.unwrap() == id); + if !any { + self.current_id = None; + } + } + } + /// Toggles the complete status of the currently selected task pub fn toggle_selected(&mut self) { if let Some(task_id) = self.current_id { diff --git a/src/ui/mod.rs b/src/ui/mod.rs index f5b5cb1..b15038f 100644 --- a/src/ui/mod.rs +++ b/src/ui/mod.rs @@ -119,7 +119,7 @@ fn run_app<B: Backend>(terminal: &mut Terminal<B>, app: App) -> Result<()> { current_page = UIPage::DeleteTask; } } - _ if code == keybindings.open_link => all_tasks_page.open_selected_link(), + _ if code == keybindings.open_link => all_tasks_page.open_selected_link()?, _ if code == keybindings.new_task => { current_page = UIPage::NewTask; task_page = TaskPage::new(Rc::clone(&app)); @@ -151,6 +151,7 @@ fn run_app<B: Backend>(terminal: &mut Terminal<B>, app: App) -> Result<()> { _ if code == keybindings.save_changes => { if dtp.submit() { all_tasks_page.ensure_group_exists(); + all_tasks_page.ensure_task_exists(); current_page = UIPage::AllTasks; delete_task_page = None; } @@ -164,6 +165,7 @@ fn run_app<B: Backend>(terminal: &mut Terminal<B>, app: App) -> Result<()> { _ if code == keybindings.save_changes => { if dtp.submit() { all_tasks_page.ensure_group_exists(); + all_tasks_page.ensure_task_exists(); current_page = UIPage::AllTasks; delete_task_page = None; } @@ -188,6 +190,7 @@ fn run_app<B: Backend>(terminal: &mut Terminal<B>, app: App) -> Result<()> { _ if code == keybindings.save_changes => { if task_page.submit() { all_tasks_page.ensure_group_exists(); + all_tasks_page.ensure_task_exists(); current_page = UIPage::AllTasks; } } @@ -200,6 +203,7 @@ fn run_app<B: Backend>(terminal: &mut Terminal<B>, app: App) -> Result<()> { _ if code == keybindings.save_changes => { if task_page.submit() { all_tasks_page.ensure_group_exists(); + all_tasks_page.ensure_task_exists(); current_page = UIPage::AllTasks; } } |