Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RecoverBull #434

Open
wants to merge 413 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 145 commits
Commits
Show all changes
413 commits
Select commit Hold shift + click to select a range
0da83dd
feat: add Google Drive integration with dynamic configuration
StaxoLotl Feb 7, 2025
c2faa1b
fix: remove unused mnemonicFingerPrint field from Backup model
StaxoLotl Feb 7, 2025
3e50cca
fix: refactor Google Drive backup saving logic
StaxoLotl Feb 7, 2025
23b7f5c
refactor: remove BIP85 derivation logic and related state management
StaxoLotl Feb 10, 2025
ec78eb9
refactor: remove BIP85 derivation logic and update backup key generation
StaxoLotl Feb 10, 2025
1aaabea
refactor: remove unused physicalBackupTested
StaxoLotl Feb 10, 2025
6c33612
refactor: remove unused TestBackupButton and related code
StaxoLotl Feb 10, 2025
5f76c32
refactor: remove flutter_speed_dial dependency and web_socket_channel
StaxoLotl Feb 10, 2025
9f28080
refactor: remove Google Drive configuration from xcconfig files
StaxoLotl Feb 10, 2025
16a2199
feat: add environment template for Keychain API and Google Drive conf…
StaxoLotl Feb 10, 2025
c4a44e1
refactor: format CFBundleURLTypes in Info.plist for consistency
StaxoLotl Feb 10, 2025
84f7577
feat: add environment setup script and update Podfile for flutter_env…
StaxoLotl Feb 10, 2025
e8fdb76
feat: update build workflow to include Google Drive client ID and URL…
StaxoLotl Feb 10, 2025
f601ef0
Merge pull request #449 from StaxoLotl/fix/backup-recovery-improvements
ethicnology Feb 11, 2025
d04b60d
fix: remove properly bip85
ethicnology Feb 11, 2025
1aa5313
refactor: remove avoid_redundant_argument_values it's risky if the d…
ethicnology Feb 11, 2025
1a57393
fix: various infos and warnings
ethicnology Feb 11, 2025
88c8a47
refactor: rename key server env
ethicnology Feb 11, 2025
f5f40c1
refactor: remove unused words.dart file & added common password const…
StaxoLotl Feb 11, 2025
c2c5089
feat: enhance KeychainState validation with regex checks for PIN and …
StaxoLotl Feb 11, 2025
9bc1fc0
fix: update key length validation to require a minimum of 7 characters
StaxoLotl Feb 11, 2025
71aa53e
feat: enhance error handling in keychain recovery and input fields wi…
StaxoLotl Feb 11, 2025
2da0088
refactor: update app name from 'bb_mobile' to 'Bull Bitcoin' in Info.…
StaxoLotl Feb 12, 2025
e33fa10
refactor: remove bip85 dependency from Podfile.lock
StaxoLotl Feb 12, 2025
ea2b0d8
feat: initialize KeyService and improve error handling for keychain API
StaxoLotl Feb 12, 2025
bfcf046
refactor: remove unused Crypto class and related encryption methods
StaxoLotl Feb 16, 2025
380e26d
feat: add support for lwk.Network in BBNetwork enum and simplify netw…
StaxoLotl Feb 16, 2025
61eddaa
feat: add publicDescriptors field to Backup model
StaxoLotl Feb 16, 2025
fbb3225
feat: add support for publicDescriptors in BDKSensitiveCreate class
StaxoLotl Feb 16, 2025
90c9819
refactor: simplify network conversion in LWKSensitiveCreate class
StaxoLotl Feb 16, 2025
e8f34f9
feat: pubspec.lock updated
StaxoLotl Feb 16, 2025
72aafd2
fix: update wallet parameter type to nullable
StaxoLotl Feb 16, 2025
accd233
feat: add key server public key configuration
StaxoLotl Feb 16, 2025
f995500
refactor: remove debug print statement
StaxoLotl Feb 16, 2025
a662a77
feat: update backup settings to handle nullable wallet and include pu…
StaxoLotl Feb 16, 2025
9dc285d
feat: add key server public key to KeyService initialization
StaxoLotl Feb 16, 2025
7dfe154
refactor: remove unnecessary print statements from BackupSettingsCubit
StaxoLotl Feb 16, 2025
247c204
feat: check for testnet wallets and toggle network if necessary
StaxoLotl Feb 16, 2025
fe8c382
refactor: simplify SuccessDialog build method
StaxoLotl Feb 16, 2025
da542c6
refactor: update navigation paths for wallet recovery
StaxoLotl Feb 16, 2025
c9f6146
refactor: enhance wallet backup status update logic
StaxoLotl Feb 16, 2025
4c36917
refactor: change lastVaultBackupTested type to DateTime
StaxoLotl Feb 16, 2025
08ef3e4
refactor: update navigation paths for wallet recovery options
StaxoLotl Feb 16, 2025
81e5fb2
refactor: update navigation path for backup settings
StaxoLotl Feb 16, 2025
b8df810
refactor: reorganize backup and recovery routes for improved navigation
StaxoLotl Feb 16, 2025
505c870
refactor: update backup settings navigation and add recovery options …
StaxoLotl Feb 16, 2025
1d66efb
refactor: update recovery navigation path for encrypted backup options
StaxoLotl Feb 16, 2025
f9f72d0
refactor: update navigation path for physical test backup and remove …
StaxoLotl Feb 16, 2025
5ae41bf
refactor: add overflow property to BBText widget
StaxoLotl Feb 18, 2025
9aaa227
refactor: correct public descriptor selection in BDKSensitiveCreate
StaxoLotl Feb 18, 2025
a1f69fb
refactor: synchronize vault backup test status in wallet storage
StaxoLotl Feb 18, 2025
50e9228
refactor: improve error handling
StaxoLotl Feb 18, 2025
7e28980
refactor: enhance homeWarnings to include backup status and routing
StaxoLotl Feb 18, 2025
83eaf89
refactor: update routing in HomeWarnings to use dynamic routes
StaxoLotl Feb 18, 2025
73cdac4
refactor: enhance backup alert to include vault backup status
StaxoLotl Feb 18, 2025
8c88fff
refactor: mark WalletSettingsListeners as const
StaxoLotl Feb 18, 2025
699efa6
refactor: update success dialog message and navigation for backup rec…
StaxoLotl Feb 18, 2025
15bf138
refactor: add bip85 dependency to Podfile.lock
StaxoLotl Feb 20, 2025
1ada102
refactor: initialize bip85 library in main function
StaxoLotl Feb 20, 2025
634a63b
refactor: update backup key derivation to use BIP85
StaxoLotl Feb 20, 2025
b92b702
refactor: add bip85 to Flutter FFI plugin list
StaxoLotl Feb 20, 2025
c42fed8
refactor: rename recoverBackupKey to fetchBackupKey in KeychainCubit
StaxoLotl Feb 20, 2025
7418843
refactor: improve error handling in BackupSettingsCubit
StaxoLotl Feb 20, 2025
cb318f0
refactor: enhance backup seed fetching
StaxoLotl Feb 20, 2025
20a76df
feat: add recoverFromSecureStorage
StaxoLotl Feb 20, 2025
c1e70df
refactor: update _loadWalletSeed return type to include error handling
StaxoLotl Feb 20, 2025
a7779b7
refactor: convert RecoveredBackupInfoPage to StatefulWidget
StaxoLotl Feb 20, 2025
fad6b9f
feat: add button to recover key from secure storage
StaxoLotl Feb 20, 2025
69b61bc
refactor: add import for JSON encoding/decoding
StaxoLotl Feb 20, 2025
cc1b036
feat: implement random index generation for backup key derivation
StaxoLotl Feb 20, 2025
1795bc6
refactor: remove unused _parseBackups method from IBackupManager inte…
StaxoLotl Feb 20, 2025
d3309b8
feat: enhance GoogleDriveBackupManager with silent sign-in and appDat…
StaxoLotl Feb 20, 2025
b2e0d53
refactor: simplify backup file ID extraction in FileSystemBackupManager
StaxoLotl Feb 20, 2025
c9d6b12
refactor: remove unused backupFolderId from BackupSettingsState
StaxoLotl Feb 20, 2025
d3630d1
refactor: streamline backup process and remove unused backupFolderId
StaxoLotl Feb 20, 2025
5bc8135
refactor: improve backup ID and salt extraction
StaxoLotl Feb 20, 2025
9b96ca0
refactor: remove debug print statements from KeychainBackupPage
StaxoLotl Feb 20, 2025
53b8821
refactor: update recovered backup handling to use encrypted data
StaxoLotl Feb 20, 2025
68ba067
refactor: add backupKey input type
StaxoLotl Feb 23, 2025
38264de
refactor: add updateBackupKey method and modify clickRecover logic
StaxoLotl Feb 23, 2025
57948f0
refactor: rename recovery methods for clarity and update backup key h…
StaxoLotl Feb 23, 2025
ec414d4
refactor: enhance backup key recovery & add AlertBox to show the key
StaxoLotl Feb 23, 2025
18b1fac
refactor: update key secret state condition
StaxoLotl Feb 23, 2025
bf2866b
rename recoverWithKeyServer to recoverBackup
StaxoLotl Feb 23, 2025
3d7f754
refactor: improve recovery input prompts
StaxoLotl Feb 23, 2025
879c927
refactor: update password/back key input handling
StaxoLotl Feb 23, 2025
8f9f50b
refactor: enhance recovery button functionality and input type switching
StaxoLotl Feb 23, 2025
e0e3ea1
refactor: implement cooldown handling in keychain logic
StaxoLotl Feb 23, 2025
bd5504f
refactor: improve error handling for server info retrieval
StaxoLotl Feb 23, 2025
0c5e375
refactor: enhance server info retrieval and error handling
StaxoLotl Feb 23, 2025
814c6a7
refactor: code cleanup
StaxoLotl Feb 23, 2025
42e0a48
fix: name updated to _loadWalletSeed
StaxoLotl Feb 23, 2025
aea7a49
refactor: rename backup managers and add backup deletion functionality
StaxoLotl Feb 23, 2025
81339a0
code cleanup
StaxoLotl Feb 23, 2025
5781040
refactor: streamline keychain functionality and enhance error handling
StaxoLotl Feb 23, 2025
675f87c
refactor: extend keychain state enums to include delete functionality
StaxoLotl Feb 23, 2025
d25450f
refactor: update file picker to return File object and enhance error …
StaxoLotl Feb 24, 2025
ff2d3f1
refactor: update removeEncryptedBackup method to use path parameter i…
StaxoLotl Feb 24, 2025
a2ad58a
refactor: add source and filename metadata to loaded backups
StaxoLotl Feb 24, 2025
4d18450
refactor: update delete backup methods to use file picker and path pa…
StaxoLotl Feb 24, 2025
882162d
refactor: add loading state in deleteBackupKey method
StaxoLotl Feb 24, 2025
3a9df84
refactor: pass additional pState parameter to KeychainBackupPage
StaxoLotl Feb 24, 2025
630c71c
refactor: add fromString method to KeyChainPageState enum for improve…
StaxoLotl Feb 24, 2025
c89e80e
refactor: add _DeletePage widget for backup deletion with PIN/passwor…
StaxoLotl Feb 24, 2025
3f72cda
refactor: enhance backup deletion process & improved user input handling
StaxoLotl Feb 24, 2025
269c216
refactor: code cleanup
StaxoLotl Feb 24, 2025
724d167
fix: invalid route path
StaxoLotl Feb 24, 2025
c3f8d50
chore: update dependencies and versions in pubspec.lock and pubspec.yaml
StaxoLotl Feb 24, 2025
9556028
chore: update recoverbull dependency reference in pubspec files
StaxoLotl Feb 24, 2025
ca4c522
chore: update google_sign_in_ios dependency and enable GPU validation…
StaxoLotl Feb 24, 2025
f4e77e9
chore: update recoverbull dependency reference to use 'main' branch
StaxoLotl Feb 24, 2025
acbb26c
Merge pull request #451 from StaxoLotl/fix/backup-recovery-improvements
ethicnology Feb 24, 2025
d3a6f55
refactor: use a Set for constant time operation and to save space
ethicnology Feb 24, 2025
3981d03
refactor: password should be at least as strong as the PIN
ethicnology Feb 24, 2025
317c64f
refactor: move recoverbull related file into it's own feature folder
ethicnology Feb 24, 2025
acd8a48
refactor: better handling of signInSilently (commit by Stax)
ethicnology Feb 24, 2025
076826b
refactor: enableGPUValidationMode to 0 before release
ethicnology Feb 24, 2025
e797c64
refactor: remove unused functions and useless parameter
ethicnology Feb 24, 2025
ccdee52
refactor: PIN is supposed to be from 6 to 8 digits with min and max v…
ethicnology Feb 25, 2025
e76ff11
refactor: format to improve readability
ethicnology Feb 25, 2025
b66efe8
refactor: rename function for consistency and use named tuple to impr…
ethicnology Feb 25, 2025
5b038a7
refactor: json backup is not supposed to be utf8 and hex decoded
ethicnology Feb 25, 2025
97c7b89
refactor: we shouldn't have another layer of json wrapping the backup…
ethicnology Feb 25, 2025
799fed4
refactor: rename package backup to recoverbull
ethicnology Feb 25, 2025
604b809
refactor: rename Backup to WalletSensitiveData to avoid confusion wit…
ethicnology Feb 25, 2025
8973d1f
refactor: rename IBackupManager to IRecoverbullManager to avoid confu…
ethicnology Feb 25, 2025
5d4c7ca
refactor: rename encrypted backup and remove unnecessary backupFolder
ethicnology Feb 25, 2025
c6df17d
refactor: the full bip85 path should be included in the backup not on…
ethicnology Feb 25, 2025
d6835bb
refactor: use BullBackup struct to avoid serialization/deserializatio…
ethicnology Feb 25, 2025
bccb656
refactor: reorganize imports
StaxoLotl Feb 24, 2025
22694f0
refactor: move TestBackupListener to recoverbull
StaxoLotl Feb 24, 2025
9fff7f9
refactor: reorganize imports
StaxoLotl Feb 24, 2025
f87ae87
refactor: moved backup classes
StaxoLotl Feb 24, 2025
56da4ce
refactor: add KeychainCubit to main app initialization
StaxoLotl Feb 25, 2025
4ec38df
refactor: integrate KeychainCubit for key server status in home page
StaxoLotl Feb 25, 2025
17b341b
refactor: integrate KeychainCubit for key server status in backup flow
StaxoLotl Feb 25, 2025
2ea086f
refactor(EncryptedVaultRecoverPage): rename BackupSettingsCubit variable
StaxoLotl Feb 25, 2025
9041887
refactor(KeychainState): add keyServerUp state and update validation …
StaxoLotl Feb 25, 2025
6c88330
refactor(KeychainCubit): initialize key service and add key server st…
StaxoLotl Feb 25, 2025
e63bf48
refactor(KeychainCubit): streamline server status checks and enhance …
StaxoLotl Feb 25, 2025
391b639
refactor(KeychainCubit): prevent duplicate backupId state updates
StaxoLotl Feb 25, 2025
0ae1a8e
refactor: code cleanup
StaxoLotl Feb 25, 2025
be50fe7
refactor(KeychainCubit): prevent duplicate state updates for backupKe…
StaxoLotl Feb 25, 2025
3f59135
refactor(KeychainCubit): remove unused serverInfo method
StaxoLotl Feb 25, 2025
97a6298
fix(KeychainBackupPage):remove redundant backup deletion logic
StaxoLotl Feb 25, 2025
7a2a43e
refactor(RecoveryPage): simplify input type text handling
StaxoLotl Feb 25, 2025
bf2d273
refactor(KeychainPage): optimize state management in PasswordField wi…
StaxoLotl Feb 25, 2025
38d727b
refactor(KeychainPage): update button visibility logic
StaxoLotl Feb 25, 2025
2352e8e
refactor(KeychainPage): improve recover button logic and state manage…
StaxoLotl Feb 25, 2025
69be749
refactor(KeychainPage): update delete button logic to use canDeleteKe…
StaxoLotl Feb 25, 2025
012e82d
chore: update resolved-ref in pubspec.lock to latest commit
StaxoLotl Feb 25, 2025
f972b94
chore: update dependencies in pubspec.lock to latest versions
StaxoLotl Feb 25, 2025
dc8d183
fix(KeychainBackupPage): backupId error
StaxoLotl Feb 25, 2025
6e51745
fix(KeychainCubit): renamed invalid function call
StaxoLotl Feb 25, 2025
3dd0be0
chore: update flutter_native_splash and google_sign_in_ios versions i…
StaxoLotl Feb 26, 2025
bef0bf3
feat: enable GPU validation mode in Runner scheme
StaxoLotl Feb 26, 2025
7879249
feat(KeychainCubit): store original page state and add new download s…
StaxoLotl Feb 26, 2025
51fb305
feat(BackupSettings): update button labels and add view/delete backup…
StaxoLotl Feb 26, 2025
39cbd58
refactor: rename _StorageOptionCard to StorageOptionCard and clean up…
StaxoLotl Feb 26, 2025
045b64e
feat: add view/delete backup key page & route
StaxoLotl Feb 26, 2025
186ece9
feat(KeychainBackupPage): pass page state to success dialog and handl…
StaxoLotl Feb 26, 2025
81dd38a
feat(KeychainPage): add download state handling and update success di…
StaxoLotl Feb 26, 2025
da44bd4
Merge pull request #482 from StaxoLotl/fix/backup-recovery-improvements
ethicnology Feb 26, 2025
26ec87c
fix: Recover from Physical Backup OR Encrypted Vault
ethicnology Feb 26, 2025
099bc62
fix: remove re-added enableGPUValidationMode = "1"
ethicnology Feb 26, 2025
ffd01fb
refactor: rename WarningBanner `Key server is down`
ethicnology Feb 26, 2025
079fff6
refactor: remove cooldown check from keyServerStatus
ethicnology Feb 26, 2025
3e30a52
feat(Button): add border color to BBButton for improved visibility
StaxoLotl Feb 26, 2025
7e3ba11
refactor(KeychainCubit): remove input validation for secret length fo…
StaxoLotl Feb 26, 2025
7e4a194
refactor(KeychainCubit): remove input validation for secret length
StaxoLotl Feb 26, 2025
1641fe7
feat(KeychainPage): replace FilledButton with BBButton to handle dark…
StaxoLotl Feb 26, 2025
2ef7cb4
code cleanup
StaxoLotl Feb 26, 2025
80d18b9
refactor: remove scrambled PIN
ethicnology Feb 26, 2025
9535b56
refactor(HomeState): remove optional route parameter from homeWarning…
StaxoLotl Feb 27, 2025
bef9281
feat(HomeState): update homeWarnings to show common warning
StaxoLotl Feb 27, 2025
b14f7d6
code cleanup
StaxoLotl Feb 27, 2025
d19b821
refactor(CardItem): show warning on each wallet that need to be tested
StaxoLotl Feb 27, 2025
64ecc19
refactor(HomeState): simplify backup warning message
StaxoLotl Feb 27, 2025
c84bf70
refactor(routes): update backup key route path for consistency
StaxoLotl Feb 27, 2025
17eaec7
feat(KeychainState): add cooldown logic for backup key requests
StaxoLotl Feb 27, 2025
99c0cb3
feat(KeychainCubit): implement cooldown handling for key server statu…
StaxoLotl Feb 27, 2025
3d960d3
refactor(KeychainPage): update backup key route path for clarity
StaxoLotl Feb 27, 2025
b312f44
refactor(KeychainPage): adjust bottom child height for improved layout
StaxoLotl Feb 27, 2025
392d581
refactor(KeychainPage): adjust bottom child height for better layout
StaxoLotl Feb 27, 2025
14c3802
refactor(KeychainPage): replace FilledButton with BBButton
StaxoLotl Feb 27, 2025
5b38eb3
fix(KeychainPage): update error handling to check key server status
StaxoLotl Feb 27, 2025
158129b
refactor(EncryptedVaultBackupPage): remove unused KeychainCubit and r…
StaxoLotl Feb 27, 2025
ecea048
refactor(RecoveredBackupInfoPage): rename cubit variable and replace …
StaxoLotl Feb 27, 2025
adca71d
reafactor: implemented server offline error messages for backup & rec…
StaxoLotl Feb 27, 2025
2660824
refactor(BackupKeyPage): implement key server status check and update…
StaxoLotl Feb 27, 2025
4ed6df5
refactor(BackupKeyPage): replaced buttons with BBButton
StaxoLotl Feb 27, 2025
2f1e8fd
refactor(HomeState): update backup warning logic to require both phys…
StaxoLotl Feb 27, 2025
66c6c34
refactor(BackupSettingsCubit): update newWallet call to include mainW…
StaxoLotl Feb 27, 2025
8e9e5ca
refactor(KeychainCubit): remove commented-out validation logic for pi…
StaxoLotl Feb 27, 2025
606025d
fix: Recover from Physical Backup OR Encrypted Vault
ethicnology Feb 26, 2025
7c44acc
fix: remove re-added enableGPUValidationMode = "1"
ethicnology Feb 26, 2025
44ef373
refactor: rename WarningBanner `Key server is down`
ethicnology Feb 26, 2025
5915d63
refactor: remove scrambled PIN
ethicnology Feb 26, 2025
5233200
refactor: remove cooldown check from keyServerStatus
ethicnology Feb 26, 2025
6cbe3b2
Merge pull request #489 from StaxoLotl/fix/backup-recovery-improvements
ethicnology Feb 27, 2025
0729072
refactor: main wallet default name should not contains fingerprint
ethicnology Feb 27, 2025
c572d7c
fix: update keyServerUp stop loading status
StaxoLotl Feb 27, 2025
f7bfae3
fix: update CardItem to check both vaultBackupTested and physicalBack…
StaxoLotl Feb 27, 2025
de93525
Merge pull request #490 from StaxoLotl/fix/backup-recovery-improvements
ethicnology Feb 27, 2025
a8e904a
fix: update BackupAlertBanner to show warning only if both backups ar…
StaxoLotl Feb 27, 2025
16c8e20
Merge pull request #492 from StaxoLotl/fix/backup-recovery-improvements
ethicnology Feb 27, 2025
ced6390
refactor: rename warning
ethicnology Feb 27, 2025
d08fad7
refactor: redirect properly to the physical backup test with words di…
ethicnology Feb 27, 2025
5166dd8
fix: update wallet creation to set vaultBackupTested and lastVaultBac…
StaxoLotl Feb 27, 2025
cdbd601
fix: improve error handling for Google Drive silent sign-in attempts
StaxoLotl Feb 27, 2025
b1b428a
fix: loading state update for server status check failures
StaxoLotl Feb 27, 2025
dde6371
fix: add key server warning banner to backup & recover wallet options
StaxoLotl Feb 27, 2025
d6409cb
code cleanup
StaxoLotl Feb 27, 2025
8f520c9
code cleanup
StaxoLotl Feb 27, 2025
545592a
fix: update recovery button to direct to encrypted vault options
StaxoLotl Feb 27, 2025
fb51a94
fix: update backup action button to trigger
StaxoLotl Feb 27, 2025
d63c04b
feat: add canPop parameter to EncryptedVaultRecoverPage for navigatio…
StaxoLotl Feb 27, 2025
f65b7aa
feat: make canPop false in recovery flow
StaxoLotl Feb 27, 2025
a8a1dcf
Merge pull request #494 from StaxoLotl/patch-recovery-flow
ethicnology Feb 28, 2025
5aaa870
feat: add KeyServerWarnings to delete backup key flow
StaxoLotl Mar 3, 2025
a2bfe85
feat: add KeyServerWarnings to backup recovery UI
StaxoLotl Mar 3, 2025
e76e250
feat: default input state to backupKey on unreachable
StaxoLotl Mar 3, 2025
acef6a5
feat: add common gap and padding constants for layout consistency
StaxoLotl Mar 3, 2025
0b6af94
feat: refactor page layouts to use shared components
StaxoLotl Mar 3, 2025
e1e73f9
feat: implement button logic mixin for server status handling
StaxoLotl Mar 3, 2025
29a9a60
feat: create reusable dialog component for success and error handling
StaxoLotl Mar 3, 2025
2ba5eea
feat: add updateWallet method to emit updated wallet state
StaxoLotl Mar 3, 2025
ff65016
feat: update wallet handling in BackupSettingsCubit to update WalletB…
StaxoLotl Mar 3, 2025
97174b6
feat: refactor BackupSettings to use StatefulWidget and add BlocListe…
StaxoLotl Mar 3, 2025
f39694e
fix: #497 disclaimer message before google sign in
ethicnology Mar 3, 2025
e887870
fix: removed dead code
StaxoLotl Mar 3, 2025
d591479
fix: double the gap size in RecoverButton
StaxoLotl Mar 3, 2025
5d0462b
Merge pull request #498 from StaxoLotl/refactor/recoverbull
ethicnology Mar 3, 2025
9e4a4ed
feat: implement connect and disconnect methods in IRecoverbullManager
StaxoLotl Mar 3, 2025
4099781
feat: add BackupType enum and backupType field to BackupSettingsState
StaxoLotl Mar 3, 2025
29bb6f8
feat: add method to set backup type and update backup manager selection
StaxoLotl Mar 3, 2025
65535bc
feat: add comments for backup-related methods
StaxoLotl Mar 3, 2025
3a7401b
refactor: code optimized
StaxoLotl Mar 3, 2025
838f078
feat: add BackupKeyDialog for displaying and copying backup key
StaxoLotl Mar 3, 2025
10c8101
refactor: rename backupSettingsCubit to cubit
StaxoLotl Mar 3, 2025
025e553
feat: add handleBackup and handleRecover methods to BackupProvider enum
StaxoLotl Mar 3, 2025
8f7be7e
Merge branch 'backup-rebased' into refactor/recoverbull
ethicnology Mar 3, 2025
765fadd
Merge pull request #502 from StaxoLotl/refactor/recoverbull
ethicnology Mar 3, 2025
e1f7953
refactor: remove BackupType, getBackupType, setBackupType connect, di…
ethicnology Mar 3, 2025
8d5e252
refactor: update latestRecoveredBackup type to BullBackup in BackupSe…
StaxoLotl Mar 4, 2025
2d67c92
refactor: simplify backup manager retrieval and update latestRecovere…
StaxoLotl Mar 4, 2025
2029201
refactor: update recoveredBackup type to BullBackup and adjust null c…
StaxoLotl Mar 4, 2025
db8d46b
refactor: update recoverBackup method to accept BullBackup type
StaxoLotl Mar 4, 2025
1ab92d1
Merge pull request #505 from StaxoLotl/refactor/recoverbull
ethicnology Mar 6, 2025
70eb270
refactor: remove infos warning
ethicnology Mar 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 56 additions & 14 deletions ios/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
PODS:
- AppAuth (1.7.6):
- AppAuth/Core (= 1.7.6)
- AppAuth/ExternalUserAgent (= 1.7.6)
- AppAuth/Core (1.7.6)
- AppAuth/ExternalUserAgent (1.7.6):
- AppAuth/Core
- bdk_flutter (0.31.2):
- Flutter
- bip85 (0.0.1):
- Flutter
- boltz (0.1.6)
- DKImagePickerController/Core (4.3.9):
- DKImagePickerController/ImageDataManager
Expand Down Expand Up @@ -49,6 +57,24 @@ PODS:
- Flutter
- flutter_secure_storage (6.0.0):
- Flutter
- google_sign_in_ios (0.0.1):
- AppAuth (>= 1.7.4)
- Flutter
- FlutterMacOS
- GoogleSignIn (~> 7.1)
- GTMSessionFetcher (>= 3.4.0)
- GoogleSignIn (7.1.0):
- AppAuth (< 2.0, >= 1.7.3)
- GTMAppAuth (< 5.0, >= 4.1.1)
- GTMSessionFetcher/Core (~> 3.3)
- GTMAppAuth (4.1.1):
- AppAuth/Core (~> 1.7)
- GTMSessionFetcher/Core (< 4.0, >= 3.3)
- GTMSessionFetcher (3.5.0):
- GTMSessionFetcher/Full (= 3.5.0)
- GTMSessionFetcher/Core (3.5.0)
- GTMSessionFetcher/Full (3.5.0):
- GTMSessionFetcher/Core
- integration_test (0.0.1):
- Flutter
- lwk (0.1.5)
Expand All @@ -73,6 +99,7 @@ PODS:

DEPENDENCIES:
- bdk_flutter (from `.symlinks/plugins/bdk_flutter/ios`)
- bip85 (from `.symlinks/plugins/bip85/ios`)
- boltz (from `.symlinks/plugins/boltz/ios`)
- document_file_save_plus (from `.symlinks/plugins/document_file_save_plus/ios`)
- file_picker (from `.symlinks/plugins/file_picker/ios`)
Expand All @@ -82,6 +109,7 @@ DEPENDENCIES:
- flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`)
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
- google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/darwin`)
- integration_test (from `.symlinks/plugins/integration_test/ios`)
- lwk (from `.symlinks/plugins/lwk/ios`)
- no_screenshot (from `.symlinks/plugins/no_screenshot/ios`)
Expand All @@ -93,15 +121,21 @@ DEPENDENCIES:

SPEC REPOS:
trunk:
- AppAuth
- DKImagePickerController
- DKPhotoGallery
- GoogleSignIn
- GTMAppAuth
- GTMSessionFetcher
- ScreenProtectorKit
- SDWebImage
- SwiftyGif

EXTERNAL SOURCES:
bdk_flutter:
:path: ".symlinks/plugins/bdk_flutter/ios"
bip85:
:path: ".symlinks/plugins/bip85/ios"
boltz:
:path: ".symlinks/plugins/boltz/ios"
document_file_save_plus:
Expand All @@ -120,6 +154,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_native_splash/ios"
flutter_secure_storage:
:path: ".symlinks/plugins/flutter_secure_storage/ios"
google_sign_in_ios:
:path: ".symlinks/plugins/google_sign_in_ios/darwin"
integration_test:
:path: ".symlinks/plugins/integration_test/ios"
lwk:
Expand All @@ -138,29 +174,35 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/url_launcher_ios/ios"

SPEC CHECKSUMS:
bdk_flutter: fb57a7400a7f3f181c5977bcdc2a5ef347ae4e7f
AppAuth: d4f13a8fe0baf391b2108511793e4b479691fb73
bdk_flutter: 08274535b7bd58a09bfa9c3733474fb44133484c
bip85: 3059e217a3a606a100dd244f21d2fc61b0a1aa83
boltz: 6388ec2412f3753b63a9e65c97f87ea26f43bddc
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
document_file_save_plus: 913d440d8b611ae19add4522ed578e3ed1483a2f
file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655
document_file_save_plus: 47b52a647efb29f7d431af45a856ce1a841f32fc
file_picker: 9b3292d7c8bc68c8a7bf8eb78f730e49c8efc517
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
flutter_barcode_scanner: 7a1144744c28dc0c57a8de7218ffe5ec59a9e4bf
flutter_file_dialog: 4c014a45b105709a27391e266c277d7e588e9299
flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069
flutter_native_splash: f71420956eb811e6d310720fee915f1d42852e7a
flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12
integration_test: 252f60fa39af5e17c3aa9899d35d908a0721b573
flutter_barcode_scanner: c5aa9f51c150a6242fa392386bd52b64bb27fcb5
flutter_file_dialog: ca8d7fbd1772d4f0c2777b4ab20a7787ef4e7dd8
flutter_keyboard_visibility: 4625131e43015dbbe759d9b20daaf77e0e3f6619
flutter_native_splash: 6cad9122ea0fad137d23137dd14b937f3e90b145
flutter_secure_storage: 1ed9476fba7e7a782b22888f956cce43e2c62f13
google_sign_in_ios: 0ab078e60da6dfe23cbc55c83502b52bba1aad63
GoogleSignIn: d4281ab6cf21542b1cfaff85c191f230b399d2db
GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de
GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
integration_test: 4a889634ef21a45d28d50d622cf412dc6d9f586e
lwk: 22e06bc5664247d6b2dac91cfe209b63b70dd580
no_screenshot: 67d110f12466f4913b488803d4e498d03ef2889e
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
no_screenshot: 6d183496405a3ab709a67a54e5cd0f639e94729e
path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
payjoin_flutter: 6397d7b698cdad6453be4949ab6aca1863f6c5e5
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d
ScreenProtectorKit: 83a6281b02c7a5902ee6eac4f5045f674e902ae4
SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3
share_plus: 8875f4f2500512ea181eef553c3e27dba5135aad
share_plus: 011d6fb4f9d2576b83179a3a5c5e323202cdabcf
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
url_launcher_ios: 694010445543906933d732453a59da0a173ae33d

PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796

Expand Down
6 changes: 3 additions & 3 deletions ios/Runner.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -515,7 +515,7 @@
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.bullbitcoin.bbMobile.RunnerTests;
PRODUCT_BUNDLE_IDENTIFIER = com.bullbitcoin.mobile.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
Expand All @@ -533,7 +533,7 @@
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.bullbitcoin.bbMobile.RunnerTests;
PRODUCT_BUNDLE_IDENTIFIER = com.bullbitcoin.mobile.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
Expand All @@ -549,7 +549,7 @@
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.bullbitcoin.bbMobile.RunnerTests;
PRODUCT_BUNDLE_IDENTIFIER = com.bullbitcoin.mobile.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
Expand Down
20 changes: 19 additions & 1 deletion ios/Runner/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -45,5 +45,23 @@
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
<key>UIFileSharingEnabled</key>
<true/>
<!-- Google Drive -->
<key>GIDClientID</key>
<string>249304738825-k5vfkegjtqv85pffdmcdr1hv6chusth6.apps.googleusercontent.com</string>
<key>BUNDLE_ID</key>
<string>com.bullbitcoin.mobile</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>com.googleusercontent.apps.249304738825-k5vfkegjtqv85pffdmcdr1hv6chusth6</string>
</array>
</dict>
</array>
</dict>
</plist>
</plist>
25 changes: 25 additions & 0 deletions lib/_model/backup.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import 'package:freezed_annotation/freezed_annotation.dart';

part 'backup.freezed.dart';
part 'backup.g.dart';

@freezed
class Backup with _$Backup {
const factory Backup({
@Default(1) int version,
@Default('') String name,
@Default(<String>[]) List<String> mnemonic,
@Default('') String passphrase,
@Default('') String mnemonicFingerPrint,
@Default('') String network,
@Default('') String layer,
@Default('') String type,
@Default('') String script,
}) = _Backup;

factory Backup.fromJson(Map<String, dynamic> json) => _$BackupFromJson(json);

const Backup._();

bool get isEmpty => mnemonic.isEmpty && passphrase.isEmpty;
}
59 changes: 56 additions & 3 deletions lib/_model/wallet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,31 @@ import 'package:freezed_annotation/freezed_annotation.dart';
part 'wallet.freezed.dart';
part 'wallet.g.dart';

enum BBNetwork { Testnet, Mainnet }
enum BBNetwork {
Testnet,

Mainnet;

static BBNetwork fromString(String network) {
switch (network) {
case 'Testnet':
return BBNetwork.Testnet;
case 'Mainnet':
return BBNetwork.Mainnet;
default:
return BBNetwork.Mainnet;
}
}

bdk.Network toBdkNetwork() {
switch (this) {
case BBNetwork.Testnet:
return bdk.Network.testnet;
case BBNetwork.Mainnet:
return bdk.Network.bitcoin;
}
}
}

enum BBWalletType { main, xpub, descriptors, words, coldcard }

Expand All @@ -37,6 +61,7 @@ class Wallet with _$Wallet {
@Default('') String externalPublicDescriptor,
@Default('') String internalPublicDescriptor,
// public
@Default({}) Map<String, BIP85Derivation> bip85Derivations,
@Default('') String mnemonicFingerprint,
@Default('') String sourceFingerprint,
required BBNetwork network,
Expand All @@ -46,8 +71,10 @@ class Wallet with _$Wallet {
String? path,
int? balance,
Balance? fullBalance,
@Default(false) bool backupTested,
DateTime? lastBackupTested,
@Default(false) bool physicalBackupTested,
DateTime? lastPhysicalBackupTested,
@Default(false) bool vaultBackupTested,
@Default(false) bool lastVaultBackupTested,
@Default(false) bool hide,
@Default(false) bool mainWallet,
required BaseWalletType baseWalletType,
Expand Down Expand Up @@ -178,6 +205,19 @@ class Wallet with _$Wallet {
return exDescDerivedKey;
}

//TODO; re-create this to derive any bip85 path
String generateNextBIP85BackupKey() {
const prefix = "m/1608'/";
final highestIndex = bip85Derivations.keys
.where((path) => path.startsWith(prefix))
.map(
(path) =>
int.tryParse(path.split('/').last.replaceAll("'", "")) ?? -1,
)
.fold(-1, (max, index) => index > max ? index : max);
return "$prefix${highestIndex + 1}'";
}

// storage key
String getRelatedSeedStorageString() {
// TODO: Sai: Uncomment this (or) add :testnet while saving testnet seed (later)
Expand Down Expand Up @@ -522,6 +562,19 @@ class Wallet with _$Wallet {
String balanceStr() => ((balance ?? 0) / 100000000).toStringAsFixed(8);
}

enum BIP85DerivationStatus { active, revoked }

@freezed
class BIP85Derivation with _$BIP85Derivation {
const factory BIP85Derivation({
required String label,
@Default(BIP85DerivationStatus.active) BIP85DerivationStatus status,
}) = _BIP85Derivation;

factory BIP85Derivation.fromJson(Map<String, dynamic> json) =>
_$BIP85DerivationFromJson(json);
}

@freezed
class Balance with _$Balance {
const factory Balance({
Expand Down
Loading