aboutsummaryrefslogtreecommitdiff
path: root/server/src/routes
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-02-04 15:39:26 +0100
committermetamuffin <metamuffin@disroot.org>2025-02-04 15:39:26 +0100
commit43fb187b6fc0d8de7a7e8604348a17434d21a30c (patch)
treed3eed00d137c31640a254ef884362b4d0b7c3395 /server/src/routes
parenta117b0710fca0ba1ef1329a8921092d1bf46abcd (diff)
downloadjellything-43fb187b6fc0d8de7a7e8604348a17434d21a30c.tar
jellything-43fb187b6fc0d8de7a7e8604348a17434d21a30c.tar.bz2
jellything-43fb187b6fc0d8de7a7e8604348a17434d21a30c.tar.zst
fix jellyfin search
Diffstat (limited to 'server/src/routes')
-rw-r--r--server/src/routes/compat/jellyfin/mod.rs15
-rw-r--r--server/src/routes/ui/sort.rs10
2 files changed, 12 insertions, 13 deletions
diff --git a/server/src/routes/compat/jellyfin/mod.rs b/server/src/routes/compat/jellyfin/mod.rs
index 85d6768..08c8a7b 100644
--- a/server/src/routes/compat/jellyfin/mod.rs
+++ b/server/src/routes/compat/jellyfin/mod.rs
@@ -289,18 +289,19 @@ pub fn r_jellyfin_items(
let filter_kind = query
.include_item_types
.and_then(|n| match n.as_str() {
- "Movie" => Some(FilterProperty::KindMovie),
- "Audio" => Some(FilterProperty::KindMusic),
- "Video" => Some(FilterProperty::KindVideo),
- _ => None,
+ "Movie" => Some(vec![FilterProperty::KindMovie]),
+ "Audio" => Some(vec![FilterProperty::KindMusic]),
+ "Video" => Some(vec![FilterProperty::KindVideo]),
+ "TvChannel" => Some(vec![FilterProperty::KindChannel]),
+ _ => Some(vec![]),
})
.or(if query.internal_artists {
- Some(FilterProperty::KindChannel)
+ Some(vec![])
} else {
None
})
.or(if query.internal_persons {
- Some(FilterProperty::KindChannel)
+ Some(vec![])
} else {
None
});
@@ -313,7 +314,7 @@ pub fn r_jellyfin_items(
filter_and_sort_nodes(
&NodeFilterSort {
sort_by: None,
- filter_kind: filter_kind.map(|a| vec![a]),
+ filter_kind,
sort_order: None,
},
match parent_kind {
diff --git a/server/src/routes/ui/sort.rs b/server/src/routes/ui/sort.rs
index 06e0209..382c4a6 100644
--- a/server/src/routes/ui/sort.rs
+++ b/server/src/routes/ui/sort.rs
@@ -19,7 +19,7 @@ pub struct NodeFilterSort {
macro_rules! form_enum {
(enum $i:ident { $($vi:ident = $vk:literal),*, }) => {
- #[derive(FromFormField, UriDisplayQuery, Clone, Copy, PartialEq, Eq)]
+ #[derive(Debug, FromFormField, UriDisplayQuery, Clone, Copy, PartialEq, Eq)]
pub enum $i { $(#[field(value = $vk)] $vi),* }
impl $i { #[allow(unused)] const ALL: &'static [$i] = &[$($i::$vi),*]; }
};
@@ -143,11 +143,9 @@ pub fn filter_and_sort_nodes(
nodes.retain(|(node, udata)| {
let mut o = true;
if let Some(prop) = &f.filter_kind {
- for p in FilterProperty::ALL {
- if prop.contains(p) {
- continue;
- }
- o &= !match p {
+ o = false;
+ for p in prop {
+ o |= match p {
FilterProperty::FederationLocal => node.federated.is_none(),
FilterProperty::FederationRemote => node.federated.is_some(),
FilterProperty::KindMovie => node.kind == NodeKind::Movie,