feat(frontend): add clean-code toast notifications

This commit is contained in:
spinline
2026-02-05 20:40:11 +03:00
parent 6e4a9e2d51
commit 6c7379483e
4 changed files with 170 additions and 30 deletions

View File

@@ -1,5 +1,6 @@
use leptos::*;
use leptos::html::Dialog;
use crate::store::{toast_success, toast_error, toast_warning};
#[component]
@@ -22,6 +23,7 @@ pub fn AddTorrentModal(
let handle_submit = move |_| {
let uri_val = uri.get();
if uri_val.is_empty() {
toast_warning("Lütfen bir Magnet URI veya URL girin");
set_error_msg.set(Some("Please enter a Magnet URI or URL".to_string()));
return;
}
@@ -42,6 +44,7 @@ pub fn AddTorrentModal(
Ok(resp) => {
if resp.ok() {
logging::log!("Torrent added successfully");
toast_success("Torrent eklendi");
set_loading.set(false);
if let Some(dialog) = dialog_ref.get() {
dialog.close();
@@ -51,12 +54,14 @@ pub fn AddTorrentModal(
let status = resp.status();
let text = resp.text().await.unwrap_or_default();
logging::error!("Failed to add torrent: {} - {}", status, text);
toast_error("Torrent eklenemedi");
set_error_msg.set(Some(format!("Error {}: {}", status, text)));
set_loading.set(false);
}
}
Err(e) => {
logging::error!("Network error: {}", e);
toast_error("Bağlantı hatası");
set_error_msg.set(Some(format!("Network Error: {}", e)));
set_loading.set(false);
}
@@ -64,6 +69,7 @@ pub fn AddTorrentModal(
}
Err(e) => {
logging::error!("Serialization error: {}", e);
toast_error("İstek hatası");
set_error_msg.set(Some(format!("Request Error: {}", e)));
set_loading.set(false);
}

View File

@@ -1,6 +1,7 @@
use leptos::*;
use wasm_bindgen::closure::Closure;
use wasm_bindgen::JsCast;
use crate::store::{get_action_messages, toast_success, toast_error};
fn format_bytes(bytes: i64) -> String {
const UNITS: [&str; 6] = ["B", "KB", "MB", "GB", "TB", "PB"];
@@ -181,6 +182,11 @@ pub fn TorrentTable() -> impl IntoView {
logging::log!("TorrentTable Action: {} on {}", action, hash);
set_menu_visible.set(false); // Close menu immediately
// Get action messages for toast (Clean Code: DRY)
let (success_msg, error_msg) = get_action_messages(&action);
let success_msg = success_msg.to_string();
let error_msg = error_msg.to_string();
spawn_local(async move {
let action_req = if action == "delete_with_data" {
"delete_with_data"
@@ -204,13 +210,21 @@ pub fn TorrentTable() -> impl IntoView {
resp.status(),
resp.status_text()
);
toast_error(error_msg);
} else {
logging::log!("Action {} executed successfully", action);
toast_success(success_msg);
}
}
Err(e) => logging::error!("Network error executing action: {}", e),
Err(e) => {
logging::error!("Network error executing action: {}", e);
toast_error(format!("{}: Bağlantı hatası", error_msg));
}
},
Err(e) => logging::error!("Failed to serialize request: {}", e),
Err(e) => {
logging::error!("Failed to serialize request: {}", e);
toast_error(error_msg);
}
}
});
};