diff options
author | metamuffin <metamuffin@disroot.org> | 2025-05-31 13:11:36 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-05-31 13:11:36 +0200 |
commit | 373243a81f8c44fcfc6a3612ba46da2c6a3286c6 (patch) | |
tree | f2cee1099592d7a3771647cce58a3feb2ae462a9 /server/src/ui/account/settings.rs | |
parent | 3e834092ba230ee081065a3b80ad227d585b5a13 (diff) | |
download | jellything-373243a81f8c44fcfc6a3612ba46da2c6a3286c6.tar jellything-373243a81f8c44fcfc6a3612ba46da2c6a3286c6.tar.bz2 jellything-373243a81f8c44fcfc6a3612ba46da2c6a3286c6.tar.zst |
use RenderInfo guard everywhere and start to use FlashMessage
Diffstat (limited to 'server/src/ui/account/settings.rs')
-rw-r--r-- | server/src/ui/account/settings.rs | 73 |
1 files changed, 25 insertions, 48 deletions
diff --git a/server/src/ui/account/settings.rs b/server/src/ui/account/settings.rs index 7d1b7af..677683b 100644 --- a/server/src/ui/account/settings.rs +++ b/server/src/ui/account/settings.rs @@ -5,24 +5,15 @@ */ use super::format_form_error; use crate::{ - helper::{language::AcceptLanguage, A}, + helper::{RequestInfo, A}, ui::error::MyResult, }; use jellycommon::user::{PlayerKind, Theme}; -use jellyimport::is_importing; -use jellylogic::{ - account::{ - update_user_display_name, update_user_native_secret, update_user_password, - update_user_player_preference, update_user_theme, - }, - session::Session, -}; -use jellyui::{ - account::settings::SettingsPage, - locale::{tr, Language}, - render_page, - scaffold::{RenderInfo, SessionInfo}, +use jellylogic::account::{ + update_user_display_name, update_user_native_secret, update_user_password, + update_user_player_preference, update_user_theme, }; +use jellyui::{account::settings::SettingsPage, locale::tr, render_page, scaffold::SessionInfo}; use rocket::{ form::{self, validate::len, Contextual, Form}, get, post, @@ -46,49 +37,36 @@ fn option_len<'v>(value: &Option<String>, range: Range<usize>) -> form::Result<' value.as_ref().map(|v| len(v, range)).unwrap_or(Ok(())) } -fn settings_page( - session: Session, - flash: Option<Result<String, String>>, - lang: Language, -) -> RawHtml<String> { +// TODO use FlashMessage +fn settings_page(flash: Option<Result<String, String>>, ri: RequestInfo) -> RawHtml<String> { RawHtml(render_page( &SettingsPage { flash, session: &SessionInfo { - user: session.user.clone(), + user: ri.session.user.clone(), }, - lang: &lang, - }, - RenderInfo { - importing: is_importing(), - session: Some(SessionInfo { user: session.user }), + lang: &ri.lang, }, - lang, + ri.render_info(), )) } #[get("/account/settings")] -pub fn r_account_settings(session: A<Session>, lang: AcceptLanguage) -> RawHtml<String> { - let AcceptLanguage(lang) = lang; - settings_page(session.0, None, lang) +pub fn r_account_settings(ri: RequestInfo) -> RawHtml<String> { + settings_page(None, ri) } #[post("/account/settings", data = "<form>")] pub fn r_account_settings_post( - session: A<Session>, + ri: RequestInfo, form: Form<Contextual<SettingsForm>>, - lang: AcceptLanguage, ) -> MyResult<RawHtml<String>> { - let AcceptLanguage(lang) = lang; - let A(session) = session; - let form = match &form.value { Some(v) => v, None => { return Ok(settings_page( - session, Some(Err(format_form_error(form).to_string())), - lang, + ri, )) } }; @@ -96,37 +74,36 @@ pub fn r_account_settings_post( let mut out = String::new(); if let Some(password) = &form.password { - update_user_password(&session, password)?; - out += &*tr(lang, "settings.account.password.changed"); + update_user_password(&ri.session, password)?; + out += &*tr(ri.lang, "settings.account.password.changed"); out += "\n"; } if let Some(display_name) = &form.display_name { - update_user_display_name(&session, display_name)?; - out += &*tr(lang, "settings.account.display_name.changed"); + update_user_display_name(&ri.session, display_name)?; + out += &*tr(ri.lang, "settings.account.display_name.changed"); out += "\n"; } if let Some(theme) = form.theme { - update_user_theme(&session, theme.0)?; - out += &*tr(lang, "settings.account.theme.changed"); + update_user_theme(&ri.session, theme.0)?; + out += &*tr(ri.lang, "settings.account.theme.changed"); out += "\n"; } if let Some(player_preference) = form.player_preference { - update_user_player_preference(&session, player_preference.0)?; - out += &*tr(lang, "settings.player_preference.changed"); + 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(&session, native_secret)?; + update_user_native_secret(&ri.session, native_secret)?; out += "Native secret updated.\n"; } Ok(settings_page( - session, // using the old session here, results in outdated theme being displayed Some(Ok(if out.is_empty() { - tr(lang, "settings.no_change").to_string() + tr(ri.lang, "settings.no_change").to_string() } else { out })), - lang, + ri, // using the old session here, results in outdated theme being displayed )) } |