diff options
author | metamuffin <metamuffin@disroot.org> | 2023-01-22 14:10:15 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-01-22 14:10:15 +0100 |
commit | ed870d1fc04891e79ab1d40be473a07810a62e69 (patch) | |
tree | 9955a00484b3311dfd4ea8121b7b4bb3654c0f86 /server/src/routes/ui/layout.rs | |
parent | ec76bbe5398f51ffa55bfd315b30c0a07245d4e6 (diff) | |
download | jellything-ed870d1fc04891e79ab1d40be473a07810a62e69.tar jellything-ed870d1fc04891e79ab1d40be473a07810a62e69.tar.bz2 jellything-ed870d1fc04891e79ab1d40be473a07810a62e69.tar.zst |
clean again
Diffstat (limited to 'server/src/routes/ui/layout.rs')
-rw-r--r-- | server/src/routes/ui/layout.rs | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/server/src/routes/ui/layout.rs b/server/src/routes/ui/layout.rs index c25e644..614aa66 100644 --- a/server/src/routes/ui/layout.rs +++ b/server/src/routes/ui/layout.rs @@ -1,15 +1,19 @@ -use super::{account::session::Session, Defer, HtmlTemplate}; -use crate::{uri, CONF}; +use super::account::session::Session; +use crate::{ + routes::ui::account::{ + rocket_uri_macro_r_account_login, rocket_uri_macro_r_account_logout, + rocket_uri_macro_r_account_register, + }, + uri, CONF, +}; use async_std::task::block_on; use markup::Render; use rocket::{ http::ContentType, - request::{FromRequest, Outcome}, response::{self, Responder}, Request, Response, }; -use std::{convert::Infallible, io::Cursor}; -use tokio::runtime::Handle; +use std::io::Cursor; markup::define! { Layout<Main: Render>(title: String, main: Main, session: Option<Session>) { @@ -27,10 +31,11 @@ markup::define! { div.account { @if let Some(session) = session { - + span { "Logged in as " @session.user.display_name } + a[href=uri!(r_account_logout())] { "Log out" } } else { - // a[href=uri!(r_account_register())] { "Register" } - // a[href=uri!(r_account_login())] { "Log in" } + a[href=uri!(r_account_register())] { "Register" } + a[href=uri!(r_account_login())] { "Log in" } } } } @@ -49,6 +54,9 @@ pub struct LayoutPage<T> { impl<'r, Main: Render> Responder<'r, 'static> for LayoutPage<Main> { fn respond_to(self, req: &'r Request<'_>) -> response::Result<'static> { + // TODO blocking the event loop here. it seems like there is no other way to + // TODO offload this, since the guard references `req` which has a lifetime. + // TODO therefore we just block. that is fine since the database is somewhat fast. let session = block_on(req.guard::<Option<Session>>()).unwrap(); let mut out = String::new(); Layout { |