aboutsummaryrefslogtreecommitdiff
path: root/server/src/ui_responder.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-02-16 17:50:57 +0100
committermetamuffin <metamuffin@disroot.org>2026-02-16 17:50:57 +0100
commitbe4af57d75cc1e233b4714b18198fb7bde49464d (patch)
tree6e529e748fc1d5c212dcf8033c8158630ca4f4d6 /server/src/ui_responder.rs
parentbb1822e3e68fe6f699102bfc1659731bdbac1a40 (diff)
downloadjellything-be4af57d75cc1e233b4714b18198fb7bde49464d.tar
jellything-be4af57d75cc1e233b4714b18198fb7bde49464d.tar.bz2
jellything-be4af57d75cc1e233b4714b18198fb7bde49464d.tar.zst
refactor ui responder; add admin import pages
Diffstat (limited to 'server/src/ui_responder.rs')
-rw-r--r--server/src/ui_responder.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/server/src/ui_responder.rs b/server/src/ui_responder.rs
new file mode 100644
index 0000000..2df6208
--- /dev/null
+++ b/server/src/ui_responder.rs
@@ -0,0 +1,43 @@
+/*
+ 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) 2026 metamuffin <metamuffin.org>
+*/
+
+use crate::request_info::RequestInfo;
+use jellycommon::{
+ TAGREG,
+ jellyobject::{ObjectBuffer, json::object_to_json},
+};
+use jellyui::render_view;
+use rocket::response::{
+ Responder,
+ content::{RawHtml, RawJson},
+};
+
+pub enum UiResponse {
+ Html(String),
+ Json(String),
+ Object(ObjectBuffer),
+}
+
+impl RequestInfo<'_> {
+ pub fn respond_ui(&self, view: ObjectBuffer) -> UiResponse {
+ if self.debug {
+ let value = object_to_json(&TAGREG, view.as_object());
+ UiResponse::Json(serde_json::to_string(&value).unwrap())
+ } else {
+ UiResponse::Html(render_view(self.render_info(), view.as_object()))
+ }
+ }
+}
+
+impl<'r, 'o: 'r> Responder<'r, 'o> for UiResponse {
+ fn respond_to(self, request: &'r rocket::Request<'_>) -> rocket::response::Result<'o> {
+ match self {
+ UiResponse::Html(x) => RawHtml(x).respond_to(request),
+ UiResponse::Json(x) => RawJson(x).respond_to(request),
+ UiResponse::Object(_) => todo!(),
+ }
+ }
+}