aboutsummaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-02-23 23:47:38 +0100
committermetamuffin <metamuffin@disroot.org>2026-02-23 23:47:38 +0100
commite7ed6eecbd9ccce486b34454fe77d71a22d1bfe2 (patch)
treeb0ec495626fac645c3065ea6e26c51a5eb006315 /server
parent71b221e3e4df1190aa87331091a89243358e98c6 (diff)
downloadjellything-e7ed6eecbd9ccce486b34454fe77d71a22d1bfe2.tar
jellything-e7ed6eecbd9ccce486b34454fe77d71a22d1bfe2.tar.bz2
jellything-e7ed6eecbd9ccce486b34454fe77d71a22d1bfe2.tar.zst
ui theme
Diffstat (limited to 'server')
-rw-r--r--server/src/ui/account/settings.rs31
1 files changed, 18 insertions, 13 deletions
diff --git a/server/src/ui/account/settings.rs b/server/src/ui/account/settings.rs
index 2e9fcbe..2052c5e 100644
--- a/server/src/ui/account/settings.rs
+++ b/server/src/ui/account/settings.rs
@@ -9,10 +9,9 @@ use crate::{
};
use anyhow::anyhow;
use jellycommon::{
- MESSAGE_KIND, MESSAGE_TEXT, USER_LOGIN, USER_NAME, USER_PASSWORD, VIEW_MESSAGE,
- VIEW_USER_SETTINGS,
- jellyobject::{Object, ObjectBuffer, ObjectBufferBuilder, Path},
+ jellyobject::{Object, ObjectBuffer, ObjectBufferBuilder, Path, Tag},
routes::u_account_settings,
+ *,
};
use jellydb::{Filter, Query, Sort};
use jellyui::tr;
@@ -31,6 +30,8 @@ pub struct SettingsForm {
password: Option<String>,
#[field(validate = option_len(4..32))]
name: Option<String>,
+ theme_accent: Option<u32>,
+ theme_preset: Option<String>,
}
fn option_len<'v>(value: &Option<String>, range: Range<usize>) -> form::Result<'v, ()> {
@@ -87,21 +88,25 @@ pub fn r_account_settings_post(
out += &*tr(ri.lang, "settings.account.display_name.changed");
out += "\n";
}
- // if let Some(theme) = form.theme {
- // update_user_theme(&ri.session, theme.0)?;
- // out += &*tr(ri.lang, "settings.account.theme.changed");
- // out += "\n";
- // }
+ if let Some(preset) = &form.theme_preset {
+ let tag = Tag::new(
+ preset
+ .as_bytes()
+ .try_into()
+ .map_err(|_| anyhow!("invalid theme preset"))?,
+ );
+ update_user(&ri, |user| user.insert(USER_THEME_PRESET, tag))?;
+ out += &*tr(ri.lang, "settings.appearance.theme.changed");
+ out += "\n";
+ }
+ if let Some(accent) = form.theme_accent {
+ update_user(&ri, |user| user.insert(USER_THEME_ACCENT, accent))?;
+ }
// if let Some(player_preference) = form.player_preference {
// update_user_player_preference(&ri.session, player_preference.0)?;
// out += &*tr(ri.lang, "settings.player_preference.changed");
// out += "\n";
// }
- // if let Some(native_secret) = &form.native_secret {
- // update_user_native_secret(&ri.session, native_secret)?;
- // out += &*tr(ri.lang, "settings.native_secret.changed");
- // out += "\n";
- // }
let out = if out.is_empty() {
tr(ri.lang, "settings.no_change").to_string()
} else {