Fix recursive filtering under base path
This commit is contained in:
19
src/files.rs
19
src/files.rs
@@ -67,6 +67,12 @@ pub async fn list_photos<TagD: TagDao, FS: FileSystemAccess>(
|
|||||||
"Failed to get files with tag_ids: {:?} with filter_mode: {:?}",
|
"Failed to get files with tag_ids: {:?} with filter_mode: {:?}",
|
||||||
tag_ids, filter_mode
|
tag_ids, filter_mode
|
||||||
))
|
))
|
||||||
|
.map(|tagged_files| {
|
||||||
|
tagged_files
|
||||||
|
.into_iter()
|
||||||
|
.filter(|f| f.starts_with(search_path))
|
||||||
|
.collect::<Vec<String>>()
|
||||||
|
})
|
||||||
.inspect(|files| debug!("Found {:?} files", files.len()))
|
.inspect(|files| debug!("Found {:?} files", files.len()))
|
||||||
.map(|tagged_files: Vec<String>| {
|
.map(|tagged_files: Vec<String>| {
|
||||||
trace!(
|
trace!(
|
||||||
@@ -123,12 +129,13 @@ pub async fn list_photos<TagD: TagDao, FS: FileSystemAccess>(
|
|||||||
let file_tags = tag_dao.get_tags_for_path(file_path).unwrap_or_default();
|
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));
|
let excluded = file_tags.iter().any(|t| excluded_tag_ids.contains(&t.id));
|
||||||
|
|
||||||
return !excluded && match filter_mode {
|
return !excluded
|
||||||
FilterMode::Any => file_tags.iter().any(|t| tag_ids.contains(&t.id)),
|
&& match filter_mode {
|
||||||
FilterMode::All => tag_ids
|
FilterMode::Any => file_tags.iter().any(|t| tag_ids.contains(&t.id)),
|
||||||
.iter()
|
FilterMode::All => tag_ids
|
||||||
.all(|id| file_tags.iter().any(|tag| &tag.id == id)),
|
.iter()
|
||||||
};
|
.all(|id| file_tags.iter().any(|tag| &tag.id == id)),
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
true
|
true
|
||||||
|
|||||||
Reference in New Issue
Block a user