diff options
-rw-r--r-- | server/src/routes/compat/jellyfin/mod.rs | 15 | ||||
-rw-r--r-- | server/src/routes/ui/sort.rs | 10 |
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, |