aboutsummaryrefslogtreecommitdiff
path: root/server/src/ui/account
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-05-31 13:38:01 +0200
committermetamuffin <metamuffin@disroot.org>2025-05-31 13:38:01 +0200
commit72a8d6c8cff8869019c3ce0cb1a38f806d964604 (patch)
treeeae26a41700a9001eee715b4a4cf0c08deb1e0dd /server/src/ui/account
parent373243a81f8c44fcfc6a3612ba46da2c6a3286c6 (diff)
downloadjellything-72a8d6c8cff8869019c3ce0cb1a38f806d964604.tar
jellything-72a8d6c8cff8869019c3ce0cb1a38f806d964604.tar.bz2
jellything-72a8d6c8cff8869019c3ce0cb1a38f806d964604.tar.zst
convert all manual message stuff to FlashMessage
Diffstat (limited to 'server/src/ui/account')
-rw-r--r--server/src/ui/account/settings.rs46
1 files changed, 22 insertions, 24 deletions
diff --git a/server/src/ui/account/settings.rs b/server/src/ui/account/settings.rs
index 677683b..d31c4ba 100644
--- a/server/src/ui/account/settings.rs
+++ b/server/src/ui/account/settings.rs
@@ -8,7 +8,10 @@ use crate::{
helper::{RequestInfo, A},
ui::error::MyResult,
};
-use jellycommon::user::{PlayerKind, Theme};
+use jellycommon::{
+ routes::u_account_settings,
+ user::{PlayerKind, Theme},
+};
use jellylogic::account::{
update_user_display_name, update_user_native_secret, update_user_password,
update_user_player_preference, update_user_theme,
@@ -17,7 +20,8 @@ use jellyui::{account::settings::SettingsPage, locale::tr, render_page, scaffold
use rocket::{
form::{self, validate::len, Contextual, Form},
get, post,
- response::content::RawHtml,
+ request::FlashMessage,
+ response::{content::RawHtml, Flash, Redirect},
FromForm,
};
use std::ops::Range;
@@ -37,11 +41,11 @@ fn option_len<'v>(value: &Option<String>, range: Range<usize>) -> form::Result<'
value.as_ref().map(|v| len(v, range)).unwrap_or(Ok(()))
}
-// TODO use FlashMessage
-fn settings_page(flash: Option<Result<String, String>>, ri: RequestInfo) -> RawHtml<String> {
+#[get("/account/settings")]
+pub fn r_account_settings(ri: RequestInfo, flash: Option<FlashMessage>) -> RawHtml<String> {
RawHtml(render_page(
&SettingsPage {
- flash,
+ flash: &flash.map(FlashMessage::into_inner),
session: &SessionInfo {
user: ri.session.user.clone(),
},
@@ -51,23 +55,18 @@ fn settings_page(flash: Option<Result<String, String>>, ri: RequestInfo) -> RawH
))
}
-#[get("/account/settings")]
-pub fn r_account_settings(ri: RequestInfo) -> RawHtml<String> {
- settings_page(None, ri)
-}
-
#[post("/account/settings", data = "<form>")]
pub fn r_account_settings_post(
ri: RequestInfo,
form: Form<Contextual<SettingsForm>>,
-) -> MyResult<RawHtml<String>> {
+) -> MyResult<Flash<Redirect>> {
let form = match &form.value {
Some(v) => v,
None => {
- return Ok(settings_page(
- Some(Err(format_form_error(form).to_string())),
- ri,
- ))
+ return Ok(Flash::error(
+ Redirect::to(u_account_settings()),
+ format_form_error(form),
+ ));
}
};
@@ -95,15 +94,14 @@ pub fn r_account_settings_post(
}
if let Some(native_secret) = &form.native_secret {
update_user_native_secret(&ri.session, native_secret)?;
- out += "Native secret updated.\n";
+ out += &*tr(ri.lang, "settings.native_secret.changed");
+ out += "\n";
}
+ let out = if out.is_empty() {
+ tr(ri.lang, "settings.no_change").to_string()
+ } else {
+ out
+ };
- Ok(settings_page(
- Some(Ok(if out.is_empty() {
- tr(ri.lang, "settings.no_change").to_string()
- } else {
- out
- })),
- ri, // using the old session here, results in outdated theme being displayed
- ))
+ Ok(Flash::success(Redirect::to(u_account_settings()), out))
}