From f62c7f2a8cc143454779dc99334ca9fc80ddabd5 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 29 Apr 2025 11:10:21 +0200 Subject: still just moving code around --- server/src/ui/items.rs | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 server/src/ui/items.rs (limited to 'server/src/ui/items.rs') diff --git a/server/src/ui/items.rs b/server/src/ui/items.rs new file mode 100644 index 0000000..c7d062d --- /dev/null +++ b/server/src/ui/items.rs @@ -0,0 +1,48 @@ +/* + 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, + ))) + }) +} -- cgit v1.2.3-70-g09d2