From b0c92e64fa1eba4ee263ee5d5614671ac05b30ae Mon Sep 17 00:00:00 2001 From: xeruf <27jf@pm.me> Date: Tue, 15 Oct 2024 03:01:57 +0200 Subject: [PATCH] feat(tasks): expand Bookmarks display to Quick Access Now also including recently created tasks --- src/tasks.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/tasks.rs b/src/tasks.rs index 5d78c12..89ffb75 100644 --- a/src/tasks.rs +++ b/src/tasks.rs @@ -60,7 +60,7 @@ pub(crate) struct TasksRelay { /// The task properties currently visible properties: Vec, /// The task properties sorted by - sorting: VecDeque, + sorting: VecDeque, // TODO track boolean for reversal? /// A filtered view of the current tasks. /// Would like this to be Task references @@ -1137,16 +1137,19 @@ impl Display for TasksRelay { } let tree = current.iter().flat_map(|task| self.traverse_up_from(Some(task.event.id))).unique(); - let ids: HashSet<&EventId> = tree.map(|t| t.get_id()).collect(); + let ids: HashSet<&EventId> = tree.map(|t| t.get_id()).chain(position).collect(); let mut bookmarks = - // TODO add recent tasks + // TODO add recent tasks (most time tracked + recently created) self.bookmarks.iter() - .filter(|id| !position.is_some_and(|p| &p == id) && !ids.contains(id)) + .chain(self.tasks.values().sorted_unstable().take(3).map(|t| t.get_id())) + .filter(|id| !ids.contains(id)) .filter_map(|id| self.get_by_id(id)) .filter(|t| self.filter(t)) + .sorted_by_cached_key(|t| self.sorting_key(t)) + .dedup() .peekable(); if bookmarks.peek().is_some() { - writeln!(lock, "{}", Colorize::bold("Bookmarks"))?; + writeln!(lock, "{}", Colorize::bold("Quick Access"))?; for task in bookmarks { writeln!( lock,