From 0cc79a94471d4b12caad8e29dfbedba0149aae02 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 27 Feb 2023 18:19:50 +0100 Subject: properly apply configured theme everywheere --- server/src/config.rs | 22 +++++++++++----------- server/src/main.rs | 29 ++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 12 deletions(-) (limited to 'server/src') diff --git a/server/src/config.rs b/server/src/config.rs index 6dd380f..870315e 100644 --- a/server/src/config.rs +++ b/server/src/config.rs @@ -2,23 +2,23 @@ use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct ClientConfig { - webrtc: ClientWebrtcConfig, - appearance: Option, + pub webrtc: ClientWebrtcConfig, + pub appearance: ClientAppearanceConfig, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct ClientWebrtcConfig { - stun: String, - turn: Option, - turn_user: Option, - turn_cred: Option, + pub stun: String, + pub turn: Option, + pub turn_user: Option, + pub turn_cred: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct ClientAppearanceConfig { - accent: String, - accent_light: String, - accent_dark: String, - background: String, - background_dark: String, + pub accent: String, + pub accent_light: String, + pub accent_dark: String, + pub background: String, + pub background_dark: String, } diff --git a/server/src/main.rs b/server/src/main.rs index 8a0e342..78f236a 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -8,7 +8,7 @@ pub mod config; pub mod protocol; pub mod room; -use config::ClientConfig; +use config::{ClientAppearanceConfig, ClientConfig}; use hyper::{header, StatusCode}; use listenfd::ListenFd; use log::{debug, error}; @@ -39,6 +39,7 @@ async fn run() { let client_config: ClientConfig = toml::from_str(include_str!("../../config/client.toml")) .expect("client configuration invalid"); let client_config_json = serde_json::to_string(&client_config).unwrap(); + let client_config_css = css_overrides(&client_config.appearance); let rooms: _ = Rooms::default(); let rooms: _ = warp::any().map(move || rooms.clone()); @@ -64,6 +65,9 @@ async fn run() { "application/json", ) }); + let client_config_css: _ = warp::path!("overrides.css").map(move || { + warp::reply::with_header(client_config_css.clone(), "content-type", "text/css") + }); let favicon: _ = warp::path!("favicon.ico").map(|| ""); let old_format_redirect: _ = warp::path!("room" / String).map(|rsecret| { reply::with_header( @@ -82,6 +86,7 @@ async fn run() { .or(favicon) .or(sw_script) .or(old_format_redirect) + .or(client_config_css) .recover(handle_rejection) .with(warp::log("stuff")); @@ -140,3 +145,25 @@ fn signaling_connect(rsecret: String, rooms: Rooms, ws: warp::ws::Ws) -> impl Re } ws.on_upgrade(move |sock| inner(sock, rsecret, rooms)) } + +fn css_overrides( + ClientAppearanceConfig { + accent, + accent_light, + accent_dark, + background, + background_dark, + }: &ClientAppearanceConfig, +) -> String { + format!( + r#":root {{ + --bg: {background}; + --bg-dark: {background_dark}; + --ac: {accent}; + --ac-dark: {accent_dark}; + --ac-dark-transparent: {accent_dark}c9; + --ac-light: {accent_light}; +}} +"# + ) +} -- cgit v1.2.3-70-g09d2