/* This file is part of jellything (https://codeberg.org/metamuffin/jellything) which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2025 metamuffin */ use super::error::MyResult; use crate::{api::AcceptJson, database::Database, locale::AcceptLanguage}; use jellycommon::{ api::{ApiNodeResponse, NodeFilterSort}, NodeID, }; use jellyimport::is_importing; use jellylogic::{node::get_node, session::Session}; use jellyui::{ node_page::NodePage, render_page, scaffold::{RenderInfo, SessionInfo}, }; use rocket::{get, response::content::RawHtml, serde::json::Json, Either, State}; #[get("/n/?&&")] pub async fn r_node<'a>( session: Session, id: NodeID, db: &'a State, aj: AcceptJson, filter: NodeFilterSort, lang: AcceptLanguage, parents: bool, children: bool, ) -> MyResult, Json>> { let AcceptLanguage(lang) = lang; let r = get_node( &db, id, &session, !*aj || children, !*aj || parents, filter.clone(), )?; Ok(if *aj { Either::Right(Json(r)) } else { Either::Left(RawHtml(render_page( &NodePage { node: &r.node, udata: &r.userdata, children: &r.children, parents: &r.parents, similar: &[], filter: &filter, lang: &lang, player: false, }, RenderInfo { importing: is_importing(), session: Some(SessionInfo { user: session.user }), }, lang, ))) }) }