From d280db8482b4bfed792c62cea4a4f563ab48d830 Mon Sep 17 00:00:00 2001 From: Cameron Date: Wed, 27 Nov 2024 16:42:17 -0500 Subject: [PATCH] Fix exclude filtering --- src/files.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/files.rs b/src/files.rs index 9704118..121f8d9 100644 --- a/src/files.rs +++ b/src/files.rs @@ -111,10 +111,19 @@ pub async fn list_photos( .filter_map(|t| t.parse().ok()) .collect::>(); + let excluded_tag_ids = &req + .exclude_tag_ids + .clone() + .unwrap_or(String::new()) + .split(',') + .filter_map(|t| t.parse().ok()) + .collect::>(); + let filter_mode = &req.tag_filter_mode.unwrap_or(FilterMode::Any); 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 match filter_mode { + return !excluded && match filter_mode { FilterMode::Any => file_tags.iter().any(|t| tag_ids.contains(&t.id)), FilterMode::All => tag_ids .iter()