/* 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::MyError; use crate::{api::AcceptJson, database::Database, locale::AcceptLanguage}; use jellycommon::api::{ApiItemsResponse, NodeFilterSort}; use jellyimport::is_importing; use jellylogic::{items::all_items, session::Session}; use jellyui::{ items::ItemsPage, render_page, scaffold::{RenderInfo, SessionInfo}, }; use rocket::{get, response::content::RawHtml, serde::json::Json, Either, State}; #[get("/items?&")] pub fn r_items( session: Session, db: &State, aj: AcceptJson, page: Option, filter: NodeFilterSort, lang: AcceptLanguage, ) -> Result, Json>, MyError> { let AcceptLanguage(lang) = lang; let r = all_items(db, &session, page, filter.clone())?; Ok(if *aj { Either::Right(Json(r)) } else { Either::Left(RawHtml(render_page( &ItemsPage { lang: &lang, r, filter: &filter, page: page.unwrap_or(0), }, RenderInfo { importing: is_importing(), session: Some(SessionInfo { user: session.user }), }, lang, ))) }) }