From ab01810b4ca4a228932739c78421ab6f840463bc Mon Sep 17 00:00:00 2001 From: Simon Felix Seeger <50206768+SFSeeger@users.noreply.github.com> Date: Sun, 1 Mar 2026 12:03:56 +0100 Subject: [PATCH] chore: Minor code quality improvements --- packages/api/src/routes/todo_list.rs | 2 +- packages/api/src/routes/todo_list/invite.rs | 3 +++ packages/api/src/routes/todos.rs | 20 +++++++++---------- .../src/views/todo/components/todo_entry.rs | 3 ++- .../frontend/src/views/todo/todo_list_list.rs | 2 +- 5 files changed, 16 insertions(+), 14 deletions(-) diff --git a/packages/api/src/routes/todo_list.rs b/packages/api/src/routes/todo_list.rs index 9f833236..7cc3da13 100644 --- a/packages/api/src/routes/todo_list.rs +++ b/packages/api/src/routes/todo_list.rs @@ -194,7 +194,7 @@ pub async fn delete_todo_list(todo_list_id: i32) -> Result, auth: Extension)] pub async fn remove_user_from_todo_list( todo_list_id: i32, diff --git a/packages/api/src/routes/todo_list/invite.rs b/packages/api/src/routes/todo_list/invite.rs index 0aa95b83..d68818bc 100644 --- a/packages/api/src/routes/todo_list/invite.rs +++ b/packages/api/src/routes/todo_list/invite.rs @@ -122,6 +122,9 @@ pub async fn decline_todo_list_invite(todo_list_id: i32) -> Result, auth: Extension )] pub async fn leave_todo_list(todo_list_id: i32) -> Result { use entity::todo_list_invitation::Column as InviteColum; diff --git a/packages/api/src/routes/todos.rs b/packages/api/src/routes/todos.rs index 744c041a..ea1f1405 100644 --- a/packages/api/src/routes/todos.rs +++ b/packages/api/src/routes/todos.rs @@ -48,11 +48,12 @@ pub async fn list_todos( use sea_orm::QueryFilter; use sea_orm::QueryOrder; use sea_orm::QuerySelect; + use sea_orm::QueryTrait; use sea_orm::RelationTrait; let user = auth.user.as_ref().or_unauthorized("Not authenticated")?; - let mut todos = Todo::find() + let todos = Todo::find() .join(JoinType::InnerJoin, entity::todo::Relation::TodoList.def()) .join( JoinType::InnerJoin, @@ -60,17 +61,14 @@ pub async fn list_todos( ) .filter(entity::todo_list_invitation::Column::ReceivingUserId.eq(user.id)) .filter(entity::todo_list_invitation::Column::IsAccepted.eq(true)) + .apply_if(completed, |query, v| { + query.filter(entity::todo::Column::Completed.eq(v)) + }) + .apply_if(favorite, |query, v| { + query.filter(entity::todo_list_invitation::Column::IsFavorite.eq(v)) + }) .order_by_asc(entity::todo::Column::Completed) - .order_by_asc(entity::todo::Column::Title); - - if let Some(completed) = completed { - todos = todos.filter(entity::todo::Column::Completed.eq(completed)); - } - if let Some(favorite) = favorite { - todos = todos.filter(entity::todo_list_invitation::Column::IsFavorite.eq(favorite)); - } - - let todos = todos + .order_by_asc(entity::todo::Column::Title) .into_partial_model() .all(&state.database) .await diff --git a/packages/frontend/src/views/todo/components/todo_entry.rs b/packages/frontend/src/views/todo/components/todo_entry.rs index e330fd3d..7618a771 100644 --- a/packages/frontend/src/views/todo/components/todo_entry.rs +++ b/packages/frontend/src/views/todo/components/todo_entry.rs @@ -8,6 +8,7 @@ use dioxus_free_icons::Icon; use dioxus_free_icons::icons::ld_icons::{LdCircle, LdCircleCheckBig, LdTrash}; use entity::todo::UpdateToDo; use entity::todo_list_invitation::InvitationPermission; +use roommates::message_from_captured_error; #[component] pub fn TodoEntry( @@ -114,7 +115,7 @@ pub fn TodoEntry( .error( &format!("Failed to delete {}!", title_clone), ToastOptions::new().description(rsx! { - span { "{error.to_string()}" } + span { "{message_from_captured_error(&error)}" } }), ); } diff --git a/packages/frontend/src/views/todo/todo_list_list.rs b/packages/frontend/src/views/todo/todo_list_list.rs index b5bfff22..800c439e 100644 --- a/packages/frontend/src/views/todo/todo_list_list.rs +++ b/packages/frontend/src/views/todo/todo_list_list.rs @@ -168,7 +168,7 @@ pub fn TodoListEntry( .error( &format!("Failed to delete {title_clone}!"), ToastOptions::new().description(rsx! { - span { "{error.to_string()}" } + span { "{message_from_captured_error(&error)}" } }), ); }