Fix correctness, security, and concurrency issues from code review
Addresses findings from a full-repo review across the mail, sync, persistence, auth, and UI layers. Send / outbox: - Stop the Graph->SMTP fallback from duplicating a message when a Graph send may already have been accepted; leave indeterminate sends queued for the user. - Parse RFC822 display-name recipients on the Graph path. - Preserve attachment order (staged in indexed subdirectories). Data safety (schema v7): - Disable cloud/device backup of the Keystore-encrypted credential DB. - Add the missing v1->v2 migration and drop the destructive migration fallback. - Normalize the messages.isHtml default and add an attachments->messages ON DELETE CASCADE foreign key (no more orphaned attachment rows). Concurrency: - Serialize syncing and per-account OAuth token refresh; cache tokens by expiry. - Synchronize Android Keystore key creation. - Make a sync's persist+notify non-cancellable so an IDLE renewal can't drop it. Notifications / UI: - Per-message notifications under a group + summary instead of one overwriting id. - Wire the "load remote images" and "allow STARTTLS" settings. - Harden the reader WebView (scheme allowlist + user gesture; no reload on recomposition); refresh headers without reverting optimistic read/star flags. - Persist draft attachments; keep server-search hits out of the inbox; encode the reader navigation argument. Build / test: - Export Room schemas; support a real release keystore; add unit/db tests. - Remove dead Gmail account-setup code left after the sign-in removal. Verified: debug + release (R8) + androidTest compile; unit tests pass; MIGRATION_6_7 matches the generated v7 schema. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -11,7 +11,8 @@
|
||||
|
||||
<application
|
||||
android:name=".LibreMailApplication"
|
||||
android:allowBackup="true"
|
||||
android:allowBackup="false"
|
||||
android:dataExtractionRules="@xml/data_extraction_rules"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
|
||||
Reference in New Issue
Block a user