Skip to content

Update sync settings screen with new recovery section#8008

Draft
CDRussell wants to merge 1 commit intofeature/craig/sync-auto-recovery-new-sync-setup-screenfrom
feature/craig/sync-auto-recovery-sync-settings-signed-in-include-toggle
Draft

Update sync settings screen with new recovery section#8008
CDRussell wants to merge 1 commit intofeature/craig/sync-auto-recovery-new-sync-setup-screenfrom
feature/craig/sync-auto-recovery-sync-settings-signed-in-include-toggle

Conversation

@CDRussell
Copy link
Member

@CDRussell CDRussell commented Mar 18, 2026

Task/Issue URL: https://app.asana.com/1/137249556945/project/72649045549333/task/1211766481496465

Description

Adds a new Recovery section to the signed-in Sync & Backup settings screen. The section contains:

  • Restore on App Reinstall toggle — when enabled, persists the recovery payload to Block Store. When disabled, clears any existing payload. Gated by syncAutoRestore FF and Block Store availability.
  • Download Recovery Code as PDF item (previously in the root of the settings screen)
  • Data expiration caption

When the settings screen is exited, if the toggle state has changed, the recovery payload is saved to or cleared from Block Store accordingly.

The toggle defaults to ON when set up via the new recovery screen during sync setup, and OFF for existing signed-in users seeing it for the first time (i.e. the FF was disabled during their initial setup).

Steps to test this PR

Notes

  • Prerequisites: Internal build installed on a device with Google Play Services, logged into a Google account.
  • Navigate to Settings > Sync Dev Settings to access Block Store controls.
  • ℹ️ Clearing app data does not restore Block Store data; it must be an uninstall/reinstall.
  • Suggested logcat filter: Sync-Recovery|Sync-AutoRestore

Scenario 1: syncAutoRestore OFF — Recovery section shown, no toggle

  • Fresh install internal variant; syncAutoRestore FF is disabled by default
  • Sign in to Sync & Backup
  • Navigate to Settings > Sync & Backup
  • Verify a Recovery section is visible containing the PDF download item and expiration caption
  • Verify the Restore on App Reinstall toggle is not visible

Scenario 2: syncAutoRestore ON, existing user — toggle visible, defaults OFF

  • Sign in to Sync & Backup with syncAutoRestore FF disabled, then enable it via FF inventory
  • Navigate to Settings > Sync & Backup
  • Verify the Restore on App Reinstall toggle is visible and OFF by default
  • Enable the toggle and navigate away (press Back)
  • Go to Sync Dev Settings → verify Block Store shows a JSON payload containing both recovery_code and device_id

Scenario 3: Toggle turned OFF — payload cleared

  • With syncAutoRestore ON and payload already saved (from Scenario 2)
  • Navigate to Settings > Sync & Backup
  • Verify the toggle is ON (state persisted)
  • Disable the toggle and navigate away
  • Go to Sync Dev Settings → verify Block Store is empty

Scenario 4: No change — no storage operations

  • Navigate to Settings > Sync & Backup, leave the toggle unchanged, and exit
  • Go to Sync Dev Settings → verify Block Store contents are unchanged

UI changes

Auto restore, available+enabled Auto restore, available+disabled Auto restore, disabled
Screenshot_20260318_160220 Screenshot_20260318_160539 Screenshot_20260318_160601

Copy link
Member Author

CDRussell commented Mar 18, 2026

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

@CDRussell CDRussell force-pushed the feature/craig/sync-auto-recovery-sync-settings-signed-in-include-toggle branch from 2150d05 to 9d9d93e Compare March 18, 2026 11:37
@CDRussell CDRussell force-pushed the feature/craig/sync-auto-recovery-new-sync-setup-screen branch 2 times, most recently from 984c575 to a81b128 Compare March 18, 2026 11:37
@CDRussell CDRussell force-pushed the feature/craig/sync-auto-recovery-sync-settings-signed-in-include-toggle branch from 9d9d93e to 0536d2b Compare March 18, 2026 11:37
@CDRussell CDRussell force-pushed the feature/craig/sync-auto-recovery-new-sync-setup-screen branch from a81b128 to ae61b9d Compare March 18, 2026 12:02
@CDRussell CDRussell force-pushed the feature/craig/sync-auto-recovery-sync-settings-signed-in-include-toggle branch from 0536d2b to b287945 Compare March 18, 2026 12:03
@CDRussell CDRussell force-pushed the feature/craig/sync-auto-recovery-new-sync-setup-screen branch 2 times, most recently from 0939797 to 42b11dd Compare March 18, 2026 12:17
@CDRussell CDRussell force-pushed the feature/craig/sync-auto-recovery-sync-settings-signed-in-include-toggle branch from b287945 to b1689ec Compare March 18, 2026 12:17
@CDRussell CDRussell changed the base branch from feature/craig/sync-auto-recovery-new-sync-setup-screen to graphite-base/8008 March 18, 2026 13:47
@CDRussell CDRussell force-pushed the feature/craig/sync-auto-recovery-sync-settings-signed-in-include-toggle branch from b1689ec to 18e9a1f Compare March 18, 2026 13:48
@CDRussell CDRussell force-pushed the graphite-base/8008 branch from 42b11dd to be6df5e Compare March 18, 2026 13:48
@CDRussell CDRussell changed the base branch from graphite-base/8008 to feature/craig/sync-auto-recovery-new-sync-setup-screen March 18, 2026 13:48
@CDRussell CDRussell force-pushed the feature/craig/sync-auto-recovery-new-sync-setup-screen branch from be6df5e to 59f6888 Compare March 18, 2026 17:11
@CDRussell CDRussell force-pushed the feature/craig/sync-auto-recovery-sync-settings-signed-in-include-toggle branch 2 times, most recently from 3f1491d to c7cd884 Compare March 18, 2026 19:00
@CDRussell CDRussell force-pushed the feature/craig/sync-auto-recovery-new-sync-setup-screen branch from 59f6888 to 91ef838 Compare March 19, 2026 10:42
@CDRussell CDRussell force-pushed the feature/craig/sync-auto-recovery-sync-settings-signed-in-include-toggle branch from c7cd884 to 3ba7252 Compare March 19, 2026 10:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant