diff --git a/.config/config.ron b/.config/config.ron index e3365ea..196ec40 100644 --- a/.config/config.ron +++ b/.config/config.ron @@ -48,6 +48,7 @@ "p": EditPriority, "n": EditName, "d": EditDue, + "o": OpenZettel, "3": SwitchTo( page: Todo(TaskList), ), diff --git a/.config/default_config.ron b/.config/default_config.ron index 45f3a3a..da5877d 100644 --- a/.config/default_config.ron +++ b/.config/default_config.ron @@ -36,7 +36,8 @@ "3": SwitchTo(page: Todo(TaskList)), "n": EditName, "p": EditPriority, - "d": EditDue + "d": EditDue, + "o": OpenZettel }, ), tasklist: ( diff --git a/src/tui/components/todo/inspector/mod.rs b/src/tui/components/todo/inspector/mod.rs index 8f09504..56c83fc 100644 --- a/src/tui/components/todo/inspector/mod.rs +++ b/src/tui/components/todo/inspector/mod.rs @@ -258,6 +258,26 @@ impl Component for Inspector<'_> { self.refresh().await; } + Signal::OpenZettel if self.is_active => { + let Some(ref curr) = self.inspecting else { + return Ok(None); + }; + + let kt = self.kh.read().await; + + let node = kt.todo_tree.get_node_by_nano_id(curr).data(); + + let zid = match &node.kind { + TodoNodeKind::Root => return Ok(None), + TodoNodeKind::Group(group) => &group.zettel.id, + TodoNodeKind::Task(task) => &task.zettel.id, + }; + + let path = kt.index.get_zod(zid).path.clone(); + drop(kt); + return Ok(Some(Signal::Helix { path })); + } + _ => {} } Ok(None) diff --git a/src/tui/components/zk/mod.rs b/src/tui/components/zk/mod.rs index ad4d772..93a2557 100644 --- a/src/tui/components/zk/mod.rs +++ b/src/tui/components/zk/mod.rs @@ -328,7 +328,7 @@ impl Component for Zk<'_> { self.update_views_from_zettel_list_selection().await?; } - Signal::OpenZettel => { + Signal::OpenZettel if self.active => { let Some(selcted) = zettel_list.state.selected() else { return Ok(None); }; diff --git a/src/tui/signal.rs b/src/tui/signal.rs index e58bb32..ea6b2b0 100644 --- a/src/tui/signal.rs +++ b/src/tui/signal.rs @@ -51,6 +51,7 @@ pub enum Signal { /// User asks to open a `Zettel` OpenZettel, + /// The user is done editing a `Zettel` ClosedZettel { /// the id of the `Zettel` that was closed