diff options
Diffstat (limited to 'server/src/ui/admin/log.rs')
-rw-r--r-- | server/src/ui/admin/log.rs | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/server/src/ui/admin/log.rs b/server/src/ui/admin/log.rs index bd6d7af..64782ba 100644 --- a/server/src/ui/admin/log.rs +++ b/server/src/ui/admin/log.rs @@ -3,19 +3,50 @@ which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2025 metamuffin <metamuffin.org> */ -use crate::ui::error::MyResult; -use jellylogic::{admin::log::get_log_stream, session::AdminSession}; -use jellyui::admin::log::render_log_line; +use crate::{helper::A, locale::AcceptLanguage, ui::error::MyResult}; +use jellyimport::is_importing; +use jellylogic::{ + admin::log::{get_log_buffer, get_log_stream}, + session::AdminSession, +}; +use jellyui::{ + admin::log::{render_log_line, ServerLogPage}, + render_page, + scaffold::{RenderInfo, SessionInfo}, +}; use rocket::{get, response::content::RawHtml}; use rocket_ws::{Message, Stream, WebSocket}; use serde_json::json; #[get("/admin/log?<warnonly>", rank = 2)] -pub fn r_admin_log<'a>(_session: AdminSession, warnonly: bool) -> MyResult<RawHtml<String>> {} +pub fn r_admin_log<'a>( + session: A<AdminSession>, + warnonly: bool, + lang: AcceptLanguage, +) -> MyResult<RawHtml<String>> { + let AcceptLanguage(lang) = lang; + let messages = get_log_buffer(warnonly) + .into_iter() + .map(|l| render_log_line(&l)) + .collect::<Vec<_>>(); + Ok(RawHtml(render_page( + &ServerLogPage { + messages: &messages, + warnonly, + }, + RenderInfo { + importing: is_importing(), + session: Some(SessionInfo { + user: session.0 .0.user, + }), + }, + lang, + ))) +} #[get("/admin/log?stream&<warnonly>&<html>", rank = 1)] pub fn r_admin_log_stream( - _session: AdminSession, + _session: A<AdminSession>, ws: WebSocket, warnonly: bool, html: bool, |