diff options
Diffstat (limited to 'server/src/ui/admin/mod.rs')
-rw-r--r-- | server/src/ui/admin/mod.rs | 74 |
1 files changed, 34 insertions, 40 deletions
diff --git a/server/src/ui/admin/mod.rs b/server/src/ui/admin/mod.rs index 4e07afb..e124a13 100644 --- a/server/src/ui/admin/mod.rs +++ b/server/src/ui/admin/mod.rs @@ -7,40 +7,31 @@ pub mod log; pub mod user; use super::error::MyResult; -use crate::helper::{language::AcceptLanguage, RequestInfo, A}; +use crate::helper::RequestInfo; use jellycommon::routes::u_admin_dashboard; use jellyimport::is_importing; -use jellylogic::{ - admin::{ - create_invite, delete_invite, do_import, get_import_errors, list_invites, - update_search_index, - }, - session::Session, -}; -use jellyui::{ - admin::AdminDashboardPage, - locale::tr, - render_page, - scaffold::{RenderInfo, SessionInfo}, +use jellylogic::admin::{ + create_invite, delete_invite, do_import, get_import_errors, list_invites, update_search_index, }; +use jellyui::{admin::AdminDashboardPage, locale::tr, render_page}; use rocket::{ form::Form, get, post, + request::FlashMessage, response::{content::RawHtml, Flash, Redirect}, FromForm, }; #[get("/admin/dashboard")] pub async fn r_admin_dashboard( - session: A<Session>, - lang: AcceptLanguage, + ri: RequestInfo, + flash: Option<FlashMessage<'_>>, ) -> MyResult<RawHtml<String>> { - session.0.assert_admin()?; - let AcceptLanguage(lang) = lang; + ri.session.assert_admin()?; let flash = None; - let invites = list_invites(&session.0)?; - let last_import_err = get_import_errors(&session.0).await; + let invites = list_invites(&ri.session)?; + let last_import_err = get_import_errors(&ri.session).await; let busy = if is_importing() { Some("An import is currently running.") @@ -54,15 +45,9 @@ pub async fn r_admin_dashboard( last_import_err: &last_import_err, invites: &invites, flash, - lang: &lang, - }, - RenderInfo { - importing: is_importing(), - session: Some(SessionInfo { - user: session.0.user, - }), + lang: &ri.lang, }, - lang, + ri.render_info(), ))) } @@ -82,24 +67,33 @@ pub struct DeleteInvite { #[post("/admin/remove_invite", data = "<form>")] pub async fn r_admin_remove_invite( - session: A<Session>, + ri: RequestInfo, form: Form<DeleteInvite>, -) -> MyResult<Redirect> { - session.0.assert_admin()?; - delete_invite(&session.0, &form.invite)?; - Ok(Redirect::temporary(u_admin_dashboard())) +) -> MyResult<Flash<Redirect>> { + 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/import?<incremental>")] -pub async fn r_admin_import(session: A<Session>, incremental: bool) -> MyResult<Redirect> { - session.0.assert_admin()?; - do_import(&session.0, incremental).await?.1?; - Ok(Redirect::temporary(u_admin_dashboard())) +pub async fn r_admin_import(ri: RequestInfo, incremental: bool) -> MyResult<Flash<Redirect>> { + ri.session.assert_admin()?; + do_import(&ri.session, incremental).await?.1?; + Ok(Flash::success( + Redirect::to(u_admin_dashboard()), + tr(ri.lang, "admin.import_success"), + )) } #[post("/admin/update_search")] -pub async fn r_admin_update_search(session: A<Session>) -> MyResult<Redirect> { - session.0.assert_admin()?; - update_search_index(&session.0).await?; - Ok(Redirect::temporary(u_admin_dashboard())) +pub async fn r_admin_update_search(ri: RequestInfo) -> MyResult<Flash<Redirect>> { + 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"), + )) } |