aboutsummaryrefslogtreecommitdiff
path: root/server/src/ui/account/settings.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-04-29 17:06:23 +0200
committermetamuffin <metamuffin@disroot.org>2025-04-29 17:06:23 +0200
commit212a0f23bc894faf88e159560c113f504349cc05 (patch)
treeee2ff0ff3b185d1874eb0e8fc4b75f1badf659b8 /server/src/ui/account/settings.rs
parentf73aa32549743b2967160d38c1622199c41524a4 (diff)
downloadjellything-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.rs47
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";
}