about summary refs log tree commit diff
path: root/src/frontend/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/mod.rs')
-rw-r--r--src/frontend/mod.rs22
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(),