feat(wallet): Add SSSS backup functionality

- Add "Backup to Matrix" button to wallet Settings tab
- Implement BackupRecoveryKeyDialog for entering recovery key
- Wire up WalletBackupService for SSSS encryption
- Add backup state to WalletPanelState and WalletPanelEvent
- Add localized strings for backup UI

Backup flow:
1. User taps "Backup to Matrix" in wallet settings
2. Dialog prompts for Matrix recovery key
3. Wallet mnemonic is encrypted with SSSS
4. Stored in Matrix account data as com.sulkta.cardano.wallet_seed

Tested: Successfully backed up wallet to SSSS on testnet.
This commit is contained in:
Kayos 2026-03-29 05:02:25 -07:00
parent 1308a8299a
commit 75edbd5499
6 changed files with 316 additions and 0 deletions

View file

@ -47,4 +47,20 @@
<string name="wallet_payment_no_wallet_message">Set up your wallet to send ADA</string>
<string name="wallet_payment_no_wallet_button">Set Up Wallet</string>
<string name="wallet_payment_insufficient_balance">Insufficient balance (%s ADA available)</string>
<!-- SSSS Backup -->
<string name="wallet_settings_backup_matrix">Backup to Matrix</string>
<string name="wallet_settings_backup_matrix_description">Encrypt and store your wallet in Matrix account data</string>
<string name="wallet_settings_restore_matrix">Restore from Matrix</string>
<string name="wallet_settings_restore_matrix_description">Restore wallet from Matrix backup</string>
<string name="wallet_backup_dialog_title">Enter Recovery Key</string>
<string name="wallet_backup_dialog_message">Enter your Matrix recovery key to encrypt your wallet backup. This is the same key used to unlock your encrypted messages.</string>
<string name="wallet_backup_dialog_hint">Recovery key</string>
<string name="wallet_backup_dialog_backup">Backup</string>
<string name="wallet_backup_dialog_restore">Restore</string>
<string name="wallet_backup_dialog_cancel">Cancel</string>
<string name="wallet_backup_success">Wallet backed up successfully</string>
<string name="wallet_restore_success">Wallet restored successfully</string>
<string name="wallet_backup_error">Backup failed: %s</string>
<string name="wallet_restore_error">Restore failed: %s</string>
</resources>