diff options
author | metamuffin <metamuffin@disroot.org> | 2025-04-29 11:10:21 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-04-29 11:10:21 +0200 |
commit | f62c7f2a8cc143454779dc99334ca9fc80ddabd5 (patch) | |
tree | f31dbb908715d2deb2860e2097fa13dd41d759d5 /server/src/ui/items.rs | |
parent | 73d2d5eb01fceae9e0b1c58afb648822000c878a (diff) | |
download | jellything-f62c7f2a8cc143454779dc99334ca9fc80ddabd5.tar jellything-f62c7f2a8cc143454779dc99334ca9fc80ddabd5.tar.bz2 jellything-f62c7f2a8cc143454779dc99334ca9fc80ddabd5.tar.zst |
still just moving code around
Diffstat (limited to 'server/src/ui/items.rs')
-rw-r--r-- | server/src/ui/items.rs | 48 |
1 files changed, 48 insertions, 0 deletions
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 <metamuffin.org> +*/ +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?<page>&<filter..>")] +pub fn r_items( + session: Session, + db: &State<Database>, + aj: AcceptJson, + page: Option<usize>, + filter: NodeFilterSort, + lang: AcceptLanguage, +) -> Result<Either<RawHtml<String>, Json<ApiItemsResponse>>, 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, + ))) + }) +} |