Skip to content

[GEN-02] mark_read_click swallows per-peer errors with no toast or busy guard #345

@intendednull

Description

@intendednull

Audit finding from #300 (commit 679f9fe)

Severity: medium
Category: ux / observability
File: crates/web/src/components/sync_queue_view.rs:82
Obvious fix: yes

Description

The mark-as-read action loops through every inbound peer issuing let _ = h.mark_queue_read(peer).await;. Failures are silently dropped; there is no busy state on the button so users can spam it, and no toast / inline message confirms or surfaces failure.

Impact / Threat

User-facing — clicking "mark as read" on a flaky link looks like a no-op; no feedback either way.

Suggested fix

Guard the click with a busy RwSignal, accumulate any Err and emit a toast via the existing toast bus; on success show the queue's own confirmation copy.

Verify

rg "mark_queue_read" crates/web/src/components/sync_queue_view.rs

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions