diff options
| author | metamuffin <metamuffin@disroot.org> | 2026-02-16 17:50:57 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2026-02-16 17:50:57 +0100 |
| commit | be4af57d75cc1e233b4714b18198fb7bde49464d (patch) | |
| tree | 6e529e748fc1d5c212dcf8033c8158630ca4f4d6 /server/src/ui_responder.rs | |
| parent | bb1822e3e68fe6f699102bfc1659731bdbac1a40 (diff) | |
| download | jellything-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.rs | 43 |
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!(), + } + } +} |