mirror of
https://github.com/bulwarkmail/webmail.git
synced 2026-10-31 08:13:50 +00:00
Every Send control was disabled only by `canSend` (recipient/subject/body validity), which never reflects an in-flight submission, so the composer stayed interactive during the JMAP round-trip. Clicking Send quickly more than once - or a click racing the keyboard send shortcut - invoked handleSend once per click and sent the message multiple times (duplicate deliveries and duplicate Sent entries), most easily hit on higher-latency connections. Add a synchronous re-entry guard: a ref (not state, which updates asynchronously and wouldn't block a second click in the same tick) set once handleSend clears its "don't send" early returns and reset in a finally, plus an isSending state that disables every Send control. Covers all entry points - the three Send buttons, the keyboard shortcut, the schedule dialog, and the attachment-warning confirm. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>