From 2b2a811cae3b049786499602d0b3dd2413d818af Mon Sep 17 00:00:00 2001 From: Cameron Date: Wed, 4 Dec 2024 19:50:04 -0500 Subject: [PATCH] Fix recursive filtering under base path --- src/files.rs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/files.rs b/src/files.rs index 121f8d9..63a9804 100644 --- a/src/files.rs +++ b/src/files.rs @@ -67,6 +67,12 @@ pub async fn list_photos( "Failed to get files with tag_ids: {:?} with filter_mode: {:?}", tag_ids, filter_mode )) + .map(|tagged_files| { + tagged_files + .into_iter() + .filter(|f| f.starts_with(search_path)) + .collect::>() + }) .inspect(|files| debug!("Found {:?} files", files.len())) .map(|tagged_files: Vec| { trace!( @@ -123,12 +129,13 @@ pub async fn list_photos( let file_tags = tag_dao.get_tags_for_path(file_path).unwrap_or_default(); let excluded = file_tags.iter().any(|t| excluded_tag_ids.contains(&t.id)); - return !excluded && match filter_mode { - FilterMode::Any => file_tags.iter().any(|t| tag_ids.contains(&t.id)), - FilterMode::All => tag_ids - .iter() - .all(|id| file_tags.iter().any(|tag| &tag.id == id)), - }; + return !excluded + && match filter_mode { + FilterMode::Any => file_tags.iter().any(|t| tag_ids.contains(&t.id)), + FilterMode::All => tag_ids + .iter() + .all(|id| file_tags.iter().any(|tag| &tag.id == id)), + }; } true