diff options
Diffstat (limited to 'server/src/routes/ui')
-rw-r--r-- | server/src/routes/ui/node.rs | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/server/src/routes/ui/node.rs b/server/src/routes/ui/node.rs index e4bf329..93186bf 100644 --- a/server/src/routes/ui/node.rs +++ b/server/src/routes/ui/node.rs @@ -6,29 +6,37 @@ use super::{assets::rocket_uri_macro_r_item_assets, error::MyError, player::player_uri}; use crate::{ database::Database, - routes::ui::{ - account::session::Session, - assets::AssetRole, - layout::{DynLayoutPage, LayoutPage}, + routes::{ + api::AcceptJson, + ui::{ + account::session::Session, + assets::AssetRole, + layout::{DynLayoutPage, LayoutPage}, + }, }, uri, }; use anyhow::{anyhow, Context}; use jellycommon::{Node, NodeKind}; -use rocket::{get, State}; +use rocket::{get, serde::json::Json, Either, State}; #[get("/n/<id>")] pub async fn r_library_node( _sess: Session, id: String, db: &State<Database>, -) -> Result<DynLayoutPage<'_>, MyError> { + aj: AcceptJson, +) -> Result<Either<DynLayoutPage<'_>, Json<Node>>, MyError> { let node = db .node .get(&id) .context("retrieving library node")? .ok_or(anyhow!("node does not exist"))?; + if *aj { + return Ok(Either::Right(Json(node))); + } + let children = node .public .children @@ -43,14 +51,14 @@ pub async fn r_library_node( .into_iter() .collect(); - Ok(LayoutPage { + Ok(Either::Left(LayoutPage { title: node.public.title.to_string(), show_back: matches!(node.public.kind, NodeKind::Movie | NodeKind::Episode), content: markup::new! { @NodePage { node: &node, id: &id, children: &children } }, ..Default::default() - }) + })) } markup::define! { |