summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordanimelchor <dmh672@gmail.com>2023-03-26 19:06:19 -0400
committerdanimelchor <dmh672@gmail.com>2023-03-26 19:06:19 -0400
commita0777364bb2c4eb5111b3ab6017ea904999b56a0 (patch)
tree1b66ca5ae2c631514e34229a89cda1f7572f22fd
parentc072e8c30663c2132ca09d9ce968d628c2566592 (diff)
fixed
-rw-r--r--src/ui/all_tasks_page.rs10
-rw-r--r--src/ui/mod.rs6
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;
}
}