aboutsummaryrefslogtreecommitdiff
path: root/server/src/ui/account
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/ui/account')
-rw-r--r--server/src/ui/account/mod.rs10
-rw-r--r--server/src/ui/account/settings.rs73
2 files changed, 30 insertions, 53 deletions
diff --git a/server/src/ui/account/mod.rs b/server/src/ui/account/mod.rs
index 2a513a9..8296e95 100644
--- a/server/src/ui/account/mod.rs
+++ b/server/src/ui/account/mod.rs
@@ -46,8 +46,8 @@ pub async fn r_account_register(lang: AcceptLanguage) -> RawHtml<String> {
RenderInfo {
importing: false,
session: None,
+ lang,
},
- lang,
))
}
@@ -73,8 +73,8 @@ pub fn r_account_login(session: Option<A<Session>>, lang: AcceptLanguage) -> Raw
RenderInfo {
session: session.map(|s| SessionInfo { user: s.0.user }),
importing: is_importing(),
+ lang,
},
- lang,
))
}
@@ -86,16 +86,16 @@ pub fn r_account_logout(session: Option<A<Session>>, lang: AcceptLanguage) -> Ra
RenderInfo {
session: session.map(|s| SessionInfo { user: s.0.user }),
importing: is_importing(),
+ lang,
},
- lang,
))
}
#[post("/account/register", data = "<form>")]
pub fn r_account_register_post<'a>(
session: Option<A<Session>>,
- form: Form<Contextual<'a, RegisterForm>>,
lang: AcceptLanguage,
+ form: Form<Contextual<'a, RegisterForm>>,
) -> MyResult<RawHtml<String>> {
let AcceptLanguage(lang) = lang;
let logged_in = session.is_some();
@@ -114,8 +114,8 @@ pub fn r_account_register_post<'a>(
RenderInfo {
session: session.map(|s| SessionInfo { user: s.0.user }),
importing: is_importing(),
+ lang,
},
- lang,
)))
}
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
))
}