aboutsummaryrefslogtreecommitdiff
path: root/server/src/ui/items.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-04-29 11:10:21 +0200
committermetamuffin <metamuffin@disroot.org>2025-04-29 11:10:21 +0200
commitf62c7f2a8cc143454779dc99334ca9fc80ddabd5 (patch)
treef31dbb908715d2deb2860e2097fa13dd41d759d5 /server/src/ui/items.rs
parent73d2d5eb01fceae9e0b1c58afb648822000c878a (diff)
downloadjellything-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.rs48
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,
+ )))
+ })
+}