Skip to content

Hardware Wallet Data Backup & Restore #1046

Description

@ovitrif

Part of #998.

Blocked by synonymdev/bitkit-core#113. Also depends on the final activity model shape from synonymdev/bitkit-core#112.

Scope

Update the app's backup/restore flow after Core exposes wallet-scoped activity migration/export APIs.

Current app state:

  • ActivityBackupV1 stores Core-owned activities: List<Activity>, activityTags: List<ActivityTags>, and closedChannels: List<ClosedChannelDetails>.
  • MetadataBackupV1 stores Core-owned tagMetadata: List<PreActivityMetadata> alongside app-owned cache/pubky data.
  • BackupRepo currently decodes those payloads directly into generated Core models before Core can migrate legacy activity JSON.
  • Core owns the activity data and activity DB. The app owns the VSS envelope, backup scheduling, and backup status.

Required app changes

After synonymdev/bitkit-core#113 lands:

  • Read the ACTIVITY and METADATA VSS backup envelopes without decoding Core-owned fields into generated Core models first.
  • Pass raw Core-owned activity/tag/pre-activity metadata JSON to Core migration/import APIs.
  • Keep app-owned restore work in the app, including cache, pubky session, settings, widgets, wallet records, and backup status handling.
  • Ask Core for migrated/current Core-owned backup entries after migration/import.
  • Rewrite the app-owned VSS backup envelopes with those migrated/current Core entries so the next restore no longer depends on legacy model JSON.
  • Do not add app-owned v1/v2 walletId migration semantics for Core models.

Acceptance criteria

  • A legacy activity backup whose Core activity/tag/metadata entries are missing walletId restores through Core migration without app-side JSON patching.
  • The app rewrites the ACTIVITY and affected METADATA VSS backups with migrated/current Core entries after migration.
  • Future restores decode the rewritten VSS backups without requiring the legacy migration path.
  • Existing non-default wallet ids returned by Core are preserved in rewritten backups.
  • Tests cover legacy ActivityBackupV1 and MetadataBackupV1 restore input, the Core migration/import call boundary, and VSS backup rewrite behavior.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions