Part of VAULT-77. This is readyToImportView in BackupImportFlowView, the screen pushed once the backup has been decrypted, and the confirmation that replaces it.
Now
- Ready: a grey section header ("Ready to Import" / "Ready to Merge" / "Ready to Override") sits over an "Import Now" button, with a long footer from
BackupImportContext.readyToImportDescription. Override's "All existing data will be lost!" is just footer text, and the button isn't destructive.
- Imported: a
PlaceholderView card with checkmark.circle.fill, "Imported" and "Your vault has been updated with the items from this backup." There's no haptic and no animation beyond .snappy, and Done appears in the toolbar.
- Error: a red
PlaceholderView card above the Import Now button.
Change
- Ready: add a
BackupHeroHeader chosen by the context, using the same symbols as the source picker (VAULT-78):
- Empty vault: "Ready to Import".
- Merge: "Ready to Merge". Subtitle: the newer version of each item is kept.
- Override: in red, "Replace Your Vault?". Subtitle: everything on this device that isn't in the backup will be deleted.
- Shorten the
BackupImportContext strings to fit a subtitle; they're only used here.
- Button: name it after the action ("Import", "Merge", "Replace Vault"), and for override use
role: .destructive, as the Restore page's Import & Override row does. Show progress in the footer while it runs if the import can take noticeable time.
- Imported: replace the form with a green
BackupHeroHeader using checkmark.circle.fill and bouncesOnAppear: true, and add .sensoryFeedback(.success), as BackupKeyChangeView.successSections does. Title it by context: "Backup Imported" / "Backup Merged" / "Vault Replaced". Keep Done.
- Error: show the error in the header, the same way as on the source picker (VAULT-78: a red symbol swap, the error's text, an error haptic), with the button still below it to try again.
Done when
- The ready and success screens use hero headers, and override is clearly marked as destructive.
- Finishing an import bounces the checkmark and plays the success haptic, as setting a backup password does.
- Snapshot tests cover ready, success and error for all three contexts, re-recorded at the standard sizes and appearances.