feat: Reply All dialog on Reply button, add Mark as Spam (#260) #261

Merged
guettlibot merged 1 commits from issue-260-fix into main 2026-05-25 19:51:10 +00:00
guettlibot commented 2026-05-25 19:47:06 +00:00 (Migrated from codeberg.org)

Summary

  • Remove Reply All button from the single-mail-view app bar.
  • Add Mark as Spam button before the Delete button; moves the email to the junk mailbox (role junk) with undo support, or shows a snackbar if no junk folder is found.
  • Reply button now acts as Reply All with dialog: collects all addresses from From/To/Cc, filters out the account's own address, deduplicates, then:
    • ≤1 candidate → navigates directly to compose (no dialog, same as a simple reply).
    • ≥2 candidates → shows a "Reply All" dialog where each address can be assigned to To, Cc, or Skip. Addresses from the incoming Cc default to Cc; From/To addresses default to To.

Test plan

  • Reply All tooltip is absent from the app bar
  • Tapping Reply on a single-recipient email skips the dialog and goes directly to compose
  • Tapping Reply on a multi-recipient email (with a Cc address) shows the Reply All dialog listing all non-own addresses
  • Mark as spam tooltip is present in the app bar
  • Tapping Mark as Spam when no junk folder exists shows a snackbar
  • All 135 widget tests pass; all 329 unit tests pass; flutter analyze clean

🤖 Generated with Claude Code

## Summary - **Remove Reply All button** from the single-mail-view app bar. - **Add Mark as Spam button** before the Delete button; moves the email to the junk mailbox (role `junk`) with undo support, or shows a snackbar if no junk folder is found. - **Reply button now acts as Reply All with dialog**: collects all addresses from From/To/Cc, filters out the account's own address, deduplicates, then: - ≤1 candidate → navigates directly to compose (no dialog, same as a simple reply). - ≥2 candidates → shows a "Reply All" dialog where each address can be assigned to **To**, **Cc**, or **Skip**. Addresses from the incoming Cc default to Cc; From/To addresses default to To. ## Test plan - [x] `Reply All` tooltip is absent from the app bar - [x] Tapping Reply on a single-recipient email skips the dialog and goes directly to compose - [x] Tapping Reply on a multi-recipient email (with a Cc address) shows the Reply All dialog listing all non-own addresses - [x] `Mark as spam` tooltip is present in the app bar - [x] Tapping Mark as Spam when no junk folder exists shows a snackbar - [x] All 135 widget tests pass; all 329 unit tests pass; `flutter analyze` clean 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.