From 88de80f87dbfd782e15b38db61d347fe8ee9d0dc Mon Sep 17 00:00:00 2001 From: suri-codes Date: Sat, 18 Apr 2026 23:01:48 -0700 Subject: [PATCH] feat: renaming of tasks persists into the zettel --- .config/config.ron | 40 ++++++++++++------------ crates/dto/src/entity/tag.rs | 5 ++- src/tui/components/todo/inspector/mod.rs | 14 ++------- src/types/task.rs | 26 +++++++++++++++ 4 files changed, 51 insertions(+), 34 deletions(-) diff --git a/.config/config.ron b/.config/config.ron index a1148ef..8007c18 100644 --- a/.config/config.ron +++ b/.config/config.ron @@ -1,10 +1,10 @@ ( directory: "/Users/suri/dev/projects/filaments/ZettelKasten", global_key_binds: { + "down": MoveDown, "ctrl-z": Suspend, - "up": MoveUp, "ctrl-c": Quit, - "down": MoveDown, + "up": MoveUp, }, zk: ( keybinds: { @@ -18,62 +18,62 @@ todo: ( explorer: ( keybinds: { - "j": MoveDown, - "tab": SwitchTo( - page: Zk, - ), - "k": MoveUp, "1": SwitchTo( page: Todo(Explorer), ), - "g": NewSubGroup, - "t": NewTask, + "j": MoveDown, "enter": SwitchTo( page: Todo(Inspector), ), + "tab": SwitchTo( + page: Zk, + ), + "g": NewSubGroup, "2": SwitchTo( page: Todo(Inspector), ), + "t": NewTask, "3": SwitchTo( page: Todo(TaskList), ), "shift-g": NewGroup, + "k": MoveUp, }, ), inspector: ( keybinds: { - "p": EditPriority, "tab": SwitchTo( page: Zk, ), - "2": SwitchTo( - page: Todo(Inspector), + "1": SwitchTo( + page: Todo(Explorer), ), + "n": EditName, "3": SwitchTo( page: Todo(TaskList), ), - "1": SwitchTo( - page: Todo(Explorer), + "p": EditPriority, + "2": SwitchTo( + page: Todo(Inspector), ), - "n": EditName, }, ), tasklist: ( keybinds: { + "k": MoveUp, + "enter": SwitchTo( + page: Todo(Inspector), + ), "tab": SwitchTo( page: Zk, ), "3": SwitchTo( page: Todo(TaskList), ), - "k": MoveUp, - "j": MoveDown, - "enter": SwitchTo( - page: Todo(Inspector), - ), "2": SwitchTo( page: Todo(Inspector), ), + "j": MoveDown, "1": SwitchTo( page: Todo(Explorer), ), diff --git a/crates/dto/src/entity/tag.rs b/crates/dto/src/entity/tag.rs index 0abf208..484e390 100644 --- a/crates/dto/src/entity/tag.rs +++ b/crates/dto/src/entity/tag.rs @@ -40,11 +40,10 @@ impl ActiveModelBehavior for ActiveModel { self.color = Set(Color::default()); } - if let Set(ref mut name) = self.name - && insert - { + if let Set(ref mut name) = self.name { *name = name.replace(' ', "_"); } + Box::pin(ready(Ok(self))) } } diff --git a/src/tui/components/todo/inspector/mod.rs b/src/tui/components/todo/inspector/mod.rs index 7bdfb46..fa3ca1b 100644 --- a/src/tui/components/todo/inspector/mod.rs +++ b/src/tui/components/todo/inspector/mod.rs @@ -1,6 +1,6 @@ use async_trait::async_trait; use crossterm::event::{KeyCode, KeyEvent}; -use dto::{GroupEntity, IntoActiveModel, NanoId, TagEntity, TaskEntity}; +use dto::NanoId; use ratatui::{ Frame, layout::{Constraint, Direction, Layout, Rect}, @@ -15,7 +15,7 @@ use crate::{ Signal, components::{Component, DEFAULT_NAME}, }, - types::{Group, KastenHandle, TodoNode, TodoNodeKind}, + types::{Group, KastenHandle, Task, TodoNode, TodoNodeKind}, }; mod rootview; @@ -241,15 +241,7 @@ impl Component for Inspector<'_> { let mut kt = self.kh.write().await; match &self.render_data { RenderData::Task { .. } => { - let _ = TaskEntity::load() - .filter_by_nano_id(id.clone()) - .one(&kt.db) - .await? - .expect("Invariant Broken: Must exist") - .into_active_model() - .set_name(new_name.as_str()) - .save(&kt.db) - .await?; + Task::alter_name(id.clone(), new_name, &mut kt).await?; } RenderData::Group { .. } => { Group::alter_name(id.clone(), new_name, &mut kt).await?; diff --git a/src/types/task.rs b/src/types/task.rs index 05d5cc9..4f77b3b 100644 --- a/src/types/task.rs +++ b/src/types/task.rs @@ -91,6 +91,32 @@ impl Task { Ok(task) } + pub async fn alter_name( + id: NanoId, + new_name: impl Into, + kt: &mut Kasten, + ) -> Result<()> { + let new_name = new_name.into(); + + let task = TaskEntity::load() + .filter_by_nano_id(id.clone()) + .one(&kt.db) + .await? + .expect("Invariant Broken: Must exist"); + + let zettel_id = task.zettel_id.clone(); + + let _ = task + .into_active_model() + .set_name(new_name.as_str()) + .save(&kt.db) + .await?; + + Zettel::alter_name(zettel_id.into(), new_name, kt).await?; + + Ok(()) + } + pub fn due(&self) -> Option { self.due .map(|due| due.format(frontmatter::DATE_FMT_STR).to_string()) -- 2.51.2