diff options
Diffstat (limited to 'src/frontend/mod.rs')
-rw-r--r-- | src/frontend/mod.rs | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/frontend/mod.rs b/src/frontend/mod.rs index 94b8aa7..a05c91d 100644 --- a/src/frontend/mod.rs +++ b/src/frontend/mod.rs @@ -1,4 +1,4 @@ -use crate::database::{Storage, StorageError}; +use crate::database::{settings::Setting, Storage, StorageError}; use axum::{ extract::{Query, State}, http::{StatusCode, Uri}, @@ -271,11 +271,13 @@ pub async fn homepage<D: Storage>( // other requests anyway if it's serious...) // // btw is it more efficient to fetch these in parallel? - let (blogname, webring, channels) = tokio::join!( + let (blogname, webring, theme, channels) = tokio::join!( db.get_setting::<crate::database::settings::SiteName>(&hcard_url) .map(Result::unwrap_or_default), db.get_setting::<crate::database::settings::Webring>(&hcard_url) .map(Result::unwrap_or_default), + db.get_setting::<crate::database::settings::Theme>(&hcard_url) + .map(Result::unwrap_or_default), db.get_channels(&hcard_url).map(|i| i.unwrap_or_default()) ); @@ -293,6 +295,7 @@ pub async fn homepage<D: Storage>( title: blogname.as_ref(), blog_name: blogname.as_ref(), feeds: channels, + theme: theme.into_inner(), user: session.as_deref(), content: MainPage { feed: &hfeed, @@ -319,9 +322,11 @@ pub async fn homepage<D: Storage>( } else { error!("Error while fetching h-card and/or h-feed: {}", err); // Return the error - let (blogname, channels) = tokio::join!( + let (blogname, theme, channels) = tokio::join!( db.get_setting::<crate::database::settings::SiteName>(&hcard_url) .map(Result::unwrap_or_default), + db.get_setting::<crate::database::settings::Theme>(&hcard_url) + .map(Result::unwrap_or_default), db.get_channels(&hcard_url).map(|i| i.unwrap_or_default()) ); @@ -332,6 +337,7 @@ pub async fn homepage<D: Storage>( title: blogname.as_ref(), blog_name: blogname.as_ref(), feeds: channels, + theme: theme.into_inner(), user: session.as_deref(), content: ErrorPage { code: err.code(), @@ -361,9 +367,11 @@ pub async fn catchall<D: Storage>( match get_post_from_database(&db, path.as_str(), query.after, user).await { Ok((post, cursor)) => { - let (blogname, channels) = tokio::join!( + let (blogname, theme, channels) = tokio::join!( db.get_setting::<crate::database::settings::SiteName>(&host) .map(Result::unwrap_or_default), + db.get_setting::<crate::database::settings::Theme>(&host) + .map(Result::unwrap_or_default), db.get_channels(&host).map(|i| i.unwrap_or_default()) ); let mut headers = axum::http::HeaderMap::new(); @@ -411,6 +419,7 @@ pub async fn catchall<D: Storage>( title: blogname.as_ref(), blog_name: blogname.as_ref(), feeds: channels, + theme: theme.into_inner(), user: session.as_deref(), content: match post.pointer("/type/0").and_then(|i| i.as_str()) { Some("h-entry") => Entry { @@ -434,9 +443,11 @@ pub async fn catchall<D: Storage>( .into_response() } Err(err) => { - let (blogname, channels) = tokio::join!( + let (blogname, theme, channels) = tokio::join!( db.get_setting::<crate::database::settings::SiteName>(&host) .map(Result::unwrap_or_default), + db.get_setting::<crate::database::settings::Theme>(&host) + .map(Result::unwrap_or_default), db.get_channels(&host).map(|i| i.unwrap_or_default()) ); ( @@ -449,6 +460,7 @@ pub async fn catchall<D: Storage>( title: blogname.as_ref(), blog_name: blogname.as_ref(), feeds: channels, + theme: theme.into_inner(), user: session.as_deref(), content: ErrorPage { code: err.code(), |