Task #520: skip send-note confirm when only one recipient

The send-note composer always showed an AlertDialog before posting,
even for the common one-on-one case. The dialog now only appears when
two or more recipients are picked.

Implementation (artifacts/tx-os/src/pages/notes.tsx):
- Extracted shared `performSend()` from `confirmSubmit` so both the
  direct-send and confirm-then-send paths reuse the same mutation,
  success toast + composer close, and error toast.
- `requestSubmit()` now branches: 0 picked = no-op, 1 picked = call
  performSend() directly, 2+ picked = open the existing AlertDialog.
- `confirmSubmit()` (the AlertDialog action) delegates to performSend.
- No changes to API, recipient picker, AR/EN strings, or any other
  AlertDialog (bulk archive/delete left untouched).

Tests:
- Updated artifacts/tx-os/tests/notes-inbox.spec.mjs (sends to a
  single recipient): no longer expects the confirm dialog; asserts
  /api/notes/:id/send fires directly and the composer closes.
- New artifacts/tx-os/tests/notes-send-confirm-threshold.spec.mjs:
  - "single-recipient send skips the confirm dialog" (passes)
  - "multi-recipient send still requires the confirm dialog" (passes)

Validation: tx-os tsc clean; both threshold specs pass locally;
architect review APPROVED.
This commit is contained in:
riyadhafraa
2026-05-13 06:50:45 +00:00
parent 4a48614e43
commit 8b3c15ba21
@@ -169,6 +169,9 @@ test("multi-recipient send still requires the confirm dialog", async ({
// Two+ recipients → confirm dialog must appear; no /send call yet.
const confirm = page.getByTestId("send-note-confirm");
await expect(confirm).toBeVisible();
// The confirm body should mention the recipient count (2 here) so
// users see what they're about to send to.
await expect(confirm).toContainText("2");
// Give the network a beat to prove no send fired pre-confirmation.
await page.waitForTimeout(250);
expect(preConfirmSendRequests).toEqual([]);