From 0010717b6e86bb662fa04dab94968eee6fe8de64 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 30 Jan 2024 13:58:52 +0100 Subject: support native player in settings and jst --- server/src/routes/ui/account/mod.rs | 6 ++---- server/src/routes/ui/account/settings.rs | 22 ++++++++++++++++++---- 2 files changed, 20 insertions(+), 8 deletions(-) (limited to 'server/src/routes/ui/account') diff --git a/server/src/routes/ui/account/mod.rs b/server/src/routes/ui/account/mod.rs index 5298f7c..144b1e0 100644 --- a/server/src/routes/ui/account/mod.rs +++ b/server/src/routes/ui/account/mod.rs @@ -22,7 +22,7 @@ use jellybase::{ database::{Ser, TableExt, T_INVITE, T_USER}, CONF, }; -use jellycommon::user::{PermissionSet, Theme, User, UserPermission}; +use jellycommon::user::{User, UserPermission}; use rocket::{ form::{Contextual, Form}, get, @@ -148,9 +148,7 @@ pub fn r_account_register_post<'a>( display_name: form.username.clone(), name: form.username.clone(), password: hash_password(&form.username, &form.password), - admin: false, - theme: Theme::Dark, - permissions: PermissionSet::default(), + ..Default::default() }), )? .map(|x| x.value().0); diff --git a/server/src/routes/ui/account/settings.rs b/server/src/routes/ui/account/settings.rs index 48e0e9f..e91bec0 100644 --- a/server/src/routes/ui/account/settings.rs +++ b/server/src/routes/ui/account/settings.rs @@ -18,7 +18,7 @@ use jellybase::{ database::{ReadableTable, Ser, T_USER}, permission::PermissionSetExt, }; -use jellycommon::user::{Theme, UserPermission}; +use jellycommon::user::{PlayerKind, Theme, UserPermission}; use markup::{Render, RenderAttributeValue}; use rocket::{ form::{self, validate::len, Contextual, Form}, @@ -35,6 +35,7 @@ pub struct SettingsForm { #[field(validate = option_len(4..32))] display_name: Option, theme: Option, + player_preference: Option, } fn option_len<'v>(value: &Option, range: Range) -> form::Result<'v, ()> { @@ -80,14 +81,23 @@ fn settings_page(session: Session, flash: Option>) -> DynLayout } input[type="submit", value="Apply"]; } + form[method="POST", action=uri!(r_account_settings_post())] { + fieldset { + legend { "Preferred Media Player" } + @for (t, tlabel) in PlayerKind::LIST { + label { input[type="radio", name="player_preference", value=A(*t), checked=session.user.player_preference==*t]; @tlabel } br; + } + } + input[type="submit", value="Apply"]; + } }, ..Default::default() } } -struct A(pub Theme); -impl RenderAttributeValue for A {} -impl Render for A { +struct A(pub T); +impl> RenderAttributeValue for A {} +impl> Render for A { fn render(&self, writer: &mut impl std::fmt::Write) -> std::fmt::Result { writer.write_fmt(format_args!("{}", &self.0 as &dyn UriDisplay)) } @@ -137,6 +147,10 @@ pub fn r_account_settings_post( user.theme = theme; out += "Theme updated\n"; } + if let Some(player_preference) = form.player_preference { + user.player_preference = player_preference; + out += "Player preference changed.\n"; + } users.insert(&*session.user.name, Ser(user))?; drop(users); -- cgit v1.3