From be4af57d75cc1e233b4714b18198fb7bde49464d Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 16 Feb 2026 17:50:57 +0100 Subject: refactor ui responder; add admin import pages --- server/src/ui/admin/mod.rs | 78 +++++----------------------------------------- 1 file changed, 7 insertions(+), 71 deletions(-) (limited to 'server/src/ui/admin/mod.rs') diff --git a/server/src/ui/admin/mod.rs b/server/src/ui/admin/mod.rs index 5ee05b7..61e62a4 100644 --- a/server/src/ui/admin/mod.rs +++ b/server/src/ui/admin/mod.rs @@ -3,80 +3,16 @@ which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2026 metamuffin */ + pub mod import; -pub mod log; -pub mod user; use super::error::MyResult; -use crate::request_info::RequestInfo; -use jellycommon::routes::u_admin_dashboard; -use jellyimport::is_importing; -use rocket::{ - FromForm, - form::Form, - get, post, - request::FlashMessage, - response::{Flash, Redirect, content::RawHtml}, -}; +use crate::{request_info::RequestInfo, ui_responder::UiResponse}; +use jellycommon::{VIEW_ADMIN_DASHBOARD, jellyobject::ObjectBuffer}; +use rocket::get; #[get("/admin/dashboard")] -pub async fn r_admin_dashboard( - ri: RequestInfo, - flash: Option>, -) -> MyResult> { - ri.session.assert_admin()?; - let invites = list_invites(&ri.session)?; - - let busy = if is_importing() { - Some("An import is currently running.") - } else { - None - }; - - Ok(RawHtml(render_page( - &AdminDashboardPage { - busy, - invites: &invites, - flash: &flash.map(FlashMessage::into_inner), - lang: &ri.lang, - }, - ri.render_info(), - ))) -} - -#[post("/admin/generate_invite")] -pub async fn r_admin_invite(ri: RequestInfo) -> MyResult> { - let i = create_invite(&ri.session)?; - Ok(Flash::success( - Redirect::to(u_admin_dashboard()), - tr(ri.lang, "admin.invite_create_success").replace("{invite}", &i), - )) -} - -#[derive(FromForm)] -pub struct DeleteInvite { - invite: String, -} - -#[post("/admin/remove_invite", data = "
")] -pub async fn r_admin_remove_invite( - ri: RequestInfo, - form: Form, -) -> MyResult> { - ri.session.assert_admin()?; - delete_invite(&ri.session, &form.invite)?; - Ok(Flash::success( - Redirect::to(u_admin_dashboard()), - tr(ri.lang, "admin.invite_delete_success"), - )) -} - -#[post("/admin/update_search")] -pub async fn r_admin_update_search(ri: RequestInfo) -> MyResult> { - ri.session.assert_admin()?; - update_search_index(&ri.session).await?; - Ok(Flash::success( - Redirect::to(u_admin_dashboard()), - tr(ri.lang, "admin.update_search_success"), - )) +pub async fn r_admin_dashboard(ri: RequestInfo<'_>) -> MyResult { + ri.require_admin()?; + Ok(ri.respond_ui(ObjectBuffer::new(&mut [(VIEW_ADMIN_DASHBOARD.0, &())]))) } -- cgit v1.3