aboutsummaryrefslogtreecommitdiff
path: root/ui
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 /ui
parent373243a81f8c44fcfc6a3612ba46da2c6a3286c6 (diff)
downloadjellything-72a8d6c8cff8869019c3ce0cb1a38f806d964604.tar
jellything-72a8d6c8cff8869019c3ce0cb1a38f806d964604.tar.bz2
jellything-72a8d6c8cff8869019c3ce0cb1a38f806d964604.tar.zst
convert all manual message stuff to FlashMessage
Diffstat (limited to 'ui')
-rw-r--r--ui/src/account/settings.rs13
-rw-r--r--ui/src/admin/mod.rs6
-rw-r--r--ui/src/admin/user.rs10
-rw-r--r--ui/src/lib.rs2
-rw-r--r--ui/src/scaffold.rs13
5 files changed, 21 insertions, 23 deletions
diff --git a/ui/src/account/settings.rs b/ui/src/account/settings.rs
index 7c5a3b8..7334c62 100644
--- a/ui/src/account/settings.rs
+++ b/ui/src/account/settings.rs
@@ -4,9 +4,9 @@
Copyright (C) 2025 metamuffin <metamuffin.org>
*/
use crate::{
- Page,
+ FlashM, Page,
locale::{Language, tr, trs},
- scaffold::SessionInfo,
+ scaffold::{FlashDisplay, SessionInfo},
};
use jellycommon::{
routes::{u_account_login, u_account_settings},
@@ -24,14 +24,9 @@ impl Page for SettingsPage<'_> {
}
markup::define! {
- SettingsPage<'a>(flash: Option<Result<String, String>>, session: &'a SessionInfo, lang: &'a Language) {
+ SettingsPage<'a>(session: &'a SessionInfo, lang: &'a Language, flash: &'a FlashM) {
h1 { "Settings" }
- @if let Some(flash) = &flash {
- @match flash {
- Ok(mesg) => { section.message { p.success { @mesg } } }
- Err(err) => { section.message { p.error { @format!("{err}") } } }
- }
- }
+ @FlashDisplay {flash}
h2 { @trs(&lang, "account") }
a.switch_account[href=u_account_login()] { "Switch Account" }
form[method="POST", action=u_account_settings()] {
diff --git a/ui/src/admin/mod.rs b/ui/src/admin/mod.rs
index 394f1c6..c2afc9d 100644
--- a/ui/src/admin/mod.rs
+++ b/ui/src/admin/mod.rs
@@ -7,7 +7,7 @@
pub mod log;
pub mod user;
-use crate::{locale::{tr, Language}, scaffold::FlashDisplay, Page};
+use crate::{FlashM, Page, locale::Language, scaffold::FlashDisplay};
use jellycommon::routes::{
u_admin_import, u_admin_invite_create, u_admin_invite_remove, u_admin_log,
u_admin_update_search, u_admin_users,
@@ -23,9 +23,9 @@ impl Page for AdminDashboardPage<'_> {
}
markup::define!(
- AdminDashboardPage<'a>(lang: &'a Language, busy: Option<&'static str>, last_import_err: &'a [String], flash: Option<Result<String, String>>, invites: &'a [String]) {
+ AdminDashboardPage<'a>(lang: &'a Language, busy: Option<&'static str>, last_import_err: &'a [String], flash: &'a FlashM, invites: &'a [String]) {
h1 { "Admin Panel" }
- @FlashDisplay { flash: flash.clone() }
+ @FlashDisplay { flash }
@if !last_import_err.is_empty() {
section.message.error {
details {
diff --git a/ui/src/admin/user.rs b/ui/src/admin/user.rs
index 613fc08..225482e 100644
--- a/ui/src/admin/user.rs
+++ b/ui/src/admin/user.rs
@@ -4,7 +4,7 @@
Copyright (C) 2025 metamuffin <metamuffin.org>
*/
-use crate::{Page, locale::Language, scaffold::FlashDisplay};
+use crate::{FlashM, Page, locale::Language, scaffold::FlashDisplay};
use jellycommon::{
routes::{u_admin_user, u_admin_user_permission, u_admin_user_remove, u_admin_users},
user::{PermissionSet, User, UserPermission},
@@ -28,9 +28,9 @@ impl Page for AdminUsersPage<'_> {
}
markup::define! {
- AdminUsersPage<'a>(lang: &'a Language, users: &'a [User], flash: Option<Result<String, String>>) {
+ AdminUsersPage<'a>(lang: &'a Language, users: &'a [User], flash: &'a FlashM) {
h1 { "User Management" }
- @FlashDisplay { flash: flash.clone() }
+ @FlashDisplay { flash }
h2 { "All Users" }
ul { @for u in *users {
li {
@@ -38,10 +38,10 @@ markup::define! {
}
}}
}
- AdminUserPage<'a>(lang: &'a Language, user: &'a User, flash: Option<Result<String, String>>) {
+ AdminUserPage<'a>(lang: &'a Language, user: &'a User, flash: &'a FlashM) {
h1 { @format!("{:?}", user.display_name) " (" @user.name ")" }
a[href=u_admin_users()] "Back to the User List"
- @FlashDisplay { flash: flash.clone() }
+ @FlashDisplay { flash }
form[method="POST", action=u_admin_user_remove(&user.name)] {
// input[type="text", name="name", value=&user.name, hidden];
input.danger[type="submit", value="Remove user(!)"];
diff --git a/ui/src/lib.rs b/ui/src/lib.rs
index c71e30f..cbf15bf 100644
--- a/ui/src/lib.rs
+++ b/ui/src/lib.rs
@@ -28,6 +28,8 @@ use std::{
sync::{LazyLock, Mutex},
};
+pub type FlashM = Option<(String, String)>;
+
#[rustfmt::skip]
#[derive(Debug, Deserialize, Serialize, Default)]
pub struct Config {
diff --git a/ui/src/scaffold.rs b/ui/src/scaffold.rs
index a115ec3..95074cf 100644
--- a/ui/src/scaffold.rs
+++ b/ui/src/scaffold.rs
@@ -5,7 +5,7 @@
*/
use crate::{
- CONF,
+ CONF, FlashM,
locale::{Language, escape, tr, trs},
};
use jellycommon::{
@@ -72,11 +72,12 @@ markup::define! {
}
}
- FlashDisplay(flash: Option<Result<String, String>>) {
- @if let Some(flash) = &flash {
- @match flash {
- Ok(mesg) => { section.message { p.success { @mesg } } }
- Err(err) => { section.message { p.error { @err } } }
+ FlashDisplay<'a>(flash: &'a FlashM) {
+ @if let Some((kind,message)) = &flash {
+ @match kind.as_str() {
+ "success" => { section.message { p.success { @message } } }
+ "error" => { section.message { p.error { @message } } }
+ _ => { section.message { p { @message } } }
}
}
}