fix: resolve context menu race condition and add debug logs

This commit is contained in:
spinline
2026-01-31 13:30:23 +03:00
parent aa7bfaf6f5
commit 52fd512554
3 changed files with 9 additions and 3 deletions

View File

@@ -647,7 +647,9 @@ pub fn App() -> impl IntoView {
torrent_hash=cm_target_hash.get() torrent_hash=cm_target_hash.get()
on_close=Callback::from(move |_| set_cm_visible.set(false)) on_close=Callback::from(move |_| set_cm_visible.set(false))
on_action=Callback::from(move |(action, hash): (String, String)| { on_action=Callback::from(move |(action, hash): (String, String)| {
logging::log!("App: Received action '{}' for hash '{}'", action, hash);
if action == "delete" || action == "delete_with_data" { if action == "delete" || action == "delete_with_data" {
logging::log!("App: Showing delete modal");
set_pending_action.set(Some((action, hash))); set_pending_action.set(Some((action, hash)));
set_show_delete_modal.set(true); set_show_delete_modal.set(true);
} else { } else {

View File

@@ -12,8 +12,9 @@ pub fn ContextMenu(
let hash = torrent_hash.clone(); let hash = torrent_hash.clone();
let action_str = action.to_string(); let action_str = action.to_string();
on_close.call(()); // Always close menu logging::log!("ContextMenu: Action '{}' for hash '{}'", action_str, hash);
on_action.call((action_str, hash)); // Delegate on_action.call((action_str, hash)); // Delegate FIRST
on_close.call(()); // Close menu AFTER
}; };
if !visible { if !visible {

View File

@@ -40,7 +40,10 @@ pub fn Modal(
class=format!("flex-1 px-4 py-3 rounded-xl transition-all font-bold text-white shadow-lg {}", class=format!("flex-1 px-4 py-3 rounded-xl transition-all font-bold text-white shadow-lg {}",
if is_danger { "bg-red-500 hover:bg-red-600 shadow-red-500/20" } else { "bg-blue-500 hover:bg-blue-600 shadow-blue-500/20" } if is_danger { "bg-red-500 hover:bg-red-600 shadow-red-500/20" } else { "bg-blue-500 hover:bg-blue-600 shadow-blue-500/20" }
) )
on:click=move |_| on_confirm.with_value(|cb| cb.call(())) on:click=move |_| {
logging::log!("Modal: Confirm clicked");
on_confirm.with_value(|cb| cb.call(()))
}
> >
{confirm_text.get_value()} {confirm_text.get_value()}
</button> </button>