diff options
author | metamuffin <metamuffin@disroot.org> | 2025-04-29 17:06:23 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-04-29 17:06:23 +0200 |
commit | 212a0f23bc894faf88e159560c113f504349cc05 (patch) | |
tree | ee2ff0ff3b185d1874eb0e8fc4b75f1badf659b8 /server/src/ui/account/settings.rs | |
parent | f73aa32549743b2967160d38c1622199c41524a4 (diff) | |
download | jellything-212a0f23bc894faf88e159560c113f504349cc05.tar jellything-212a0f23bc894faf88e159560c113f504349cc05.tar.bz2 jellything-212a0f23bc894faf88e159560c113f504349cc05.tar.zst |
comiles again but still many logic holes
Diffstat (limited to 'server/src/ui/account/settings.rs')
-rw-r--r-- | server/src/ui/account/settings.rs | 47 |
1 files changed, 33 insertions, 14 deletions
diff --git a/server/src/ui/account/settings.rs b/server/src/ui/account/settings.rs index e6d096f..5355321 100644 --- a/server/src/ui/account/settings.rs +++ b/server/src/ui/account/settings.rs @@ -4,16 +4,20 @@ Copyright (C) 2025 metamuffin <metamuffin.org> */ use super::{format_form_error, hash_password}; -use crate::{database::Database, locale::AcceptLanguage, ui::error::MyResult}; +use crate::{database::Database, helper::A, locale::AcceptLanguage, ui::error::MyResult}; use jellybase::permission::PermissionSetExt; use jellycommon::user::{PlayerKind, Theme, UserPermission}; +use jellyimport::is_importing; use jellylogic::session::Session; -use jellyui::locale::Language; +use jellyui::{ + account::settings::SettingsPage, + locale::{tr, Language}, + render_page, + scaffold::{RenderInfo, SessionInfo}, +}; use rocket::{ form::{self, validate::len, Contextual, Form}, - get, - http::uri::fmt::{Query, UriDisplay}, - post, + get, post, response::content::RawHtml, FromForm, State, }; @@ -25,8 +29,8 @@ pub struct SettingsForm { password: Option<String>, #[field(validate = option_len(4..32))] display_name: Option<String>, - theme: Option<Theme>, - player_preference: Option<PlayerKind>, + theme: Option<A<Theme>>, + player_preference: Option<A<PlayerKind>>, native_secret: Option<String>, } @@ -36,25 +40,40 @@ fn option_len<'v>(value: &Option<String>, range: Range<usize>) -> form::Result<' fn settings_page( session: Session, - flash: Option<MyResult<String>>, + flash: Option<Result<String, String>>, lang: Language, ) -> RawHtml<String> { + RawHtml(render_page( + &SettingsPage { + flash, + session: &SessionInfo { + user: session.user.clone(), + }, + lang: &lang, + }, + RenderInfo { + importing: is_importing(), + session: Some(SessionInfo { user: session.user }), + }, + lang, + )) } #[get("/account/settings")] -pub fn r_account_settings(session: Session, lang: AcceptLanguage) -> RawHtml<String> { +pub fn r_account_settings(session: A<Session>, lang: AcceptLanguage) -> RawHtml<String> { let AcceptLanguage(lang) = lang; - settings_page(session, None, lang) + settings_page(session.0, None, lang) } #[post("/account/settings", data = "<form>")] pub fn r_account_settings_post( - session: Session, + session: A<Session>, database: &State<Database>, form: Form<Contextual<SettingsForm>>, lang: AcceptLanguage, ) -> MyResult<RawHtml<String>> { let AcceptLanguage(lang) = lang; + let A(session) = session; session .user .permissions @@ -65,7 +84,7 @@ pub fn r_account_settings_post( None => { return Ok(settings_page( session, - Some(Err(format_form_error(form))), + Some(Err(format_form_error(form).to_string())), lang, )) } @@ -85,12 +104,12 @@ pub fn r_account_settings_post( out += "\n"; } if let Some(theme) = form.theme { - user.theme = theme; + user.theme = theme.0; out += &*tr(lang, "settings.account.theme.changed"); out += "\n"; } if let Some(player_preference) = form.player_preference { - user.player_preference = player_preference; + user.player_preference = player_preference.0; out += &*tr(lang, "settings.player_preference.changed"); out += "\n"; } |