From 83303a1b981c88f956a2884cfec4d1729ea4e636 Mon Sep 17 00:00:00 2001 From: a Date: Mon, 11 May 2026 20:27:45 -0700 Subject: [PATCH] package rename refactor --- README.md | 136 +++++----- app/build.gradle | 8 +- app/proguard-rules.pro | 24 +- .../app/App.java | 8 +- .../app/Logger.java | 2 +- .../app/RedactingDebugTree.java | 2 +- .../app/api/read/ApiCallback.java | 2 +- .../app/api/read/ApiClient.java | 14 +- .../app/api/read/ApiException.java | 2 +- .../app/api/read/ApiResponse.java | 2 +- .../app/api/read/Configuration.java | 2 +- .../app/api/read/GzipRequestInterceptor.java | 2 +- .../app/api/read/JSON.java | 2 +- .../app/api/read/Pair.java | 2 +- .../app/api/read/ProgressRequestBody.java | 2 +- .../app/api/read/ProgressResponseBody.java | 2 +- .../app/api/read/StringUtil.java | 2 +- .../app/api/read/api/AccountsApi.java | 26 +- .../app/api/read/auth/ApiKeyAuth.java | 4 +- .../app/api/read/auth/Authentication.java | 4 +- .../app/api/read/auth/HttpBasicAuth.java | 4 +- .../AccountPendingTransactionSummary.java | 2 +- ...ountPendingTransactionSummaryResponse.java | 2 +- .../read/model/AccountTokenListResponse.java | 2 +- .../api/read/model/AccountTokenSummary.java | 2 +- .../read/model/AccountTransactionSummary.java | 2 +- .../AccountTransactionSummaryResponse.java | 2 +- .../app/api/read/model/Balance.java | 2 +- .../app/api/read/model/BalanceResponse.java | 2 +- .../api/read/model/ErrorResponseModel.java | 2 +- .../app/api/read/model/Receipt.java | 2 +- .../app/api/read/model/TransactionType.java | 2 +- .../read/AccountBalanceRestTask.java | 14 +- .../read/AccountPendingTxnRestTask.java | 12 +- .../asynctask/read/AccountTxnRestTask.java | 12 +- .../read/ListAccountTokensRestTask.java | 12 +- .../app/backup/BackupExecutor.java | 34 +-- .../app/backup/CloudBackupManager.java | 10 +- .../app/backup/WalletBackupAgent.java | 4 +- .../app/bridge/BridgeCallback.java | 2 +- .../app/bridge/QuantumCoinJSBridge.java | 2 +- .../app/bridge/WebViewManager.java | 28 +- .../app/entity/ErrorEnvelope.java | 2 +- .../app/entity/ServiceException.java | 2 +- .../app/events/NetworkChangeBroadcaster.java | 6 +- .../interact/BlockchainNetworkInteract.java | 2 +- .../app/interact/JsonInteract.java | 2 +- .../app/interact/KeyInteract.java | 6 +- .../app/keystorage/Aead.java | 2 +- .../AndroidKeystoreGenerationCounter.java | 2 +- .../keystorage/DefaultSecureRandomSource.java | 2 +- .../app/keystorage/MacUtil.java | 2 +- .../app/keystorage/SecureRandomSource.java | 2 +- .../app/keystorage/SecureStorage.java | 24 +- .../keystorage/TooManyAttemptsException.java | 4 +- .../app/keystorage/UnlockCoordinator.java | 26 +- .../keystorage/WrongPasswordException.java | 2 +- .../app/model/BlockchainNetwork.java | 2 +- .../app/networking/NetworkSnapshot.java | 4 +- .../app/networking/UrlBuilder.java | 4 +- .../app/security/BundleIntegrity.java | 4 +- .../app/security/CredentialIdentifier.java | 2 +- .../app/security/ScreenCaptureGuard.java | 2 +- .../app/security/TamperGate.java | 4 +- .../app/security/TamperGatePolicy.java | 4 +- .../app/security/TlsPinning.java | 2 +- .../app/security/UnlockAttemptLimiter.java | 8 +- .../generated/GeneratedBundleHash.java | 2 +- .../app/services/IKeyService.java | 4 +- .../app/services/KeyService.java | 6 +- .../app/storage/AtomicSlotWriter.java | 2 +- .../app/strongbox/StrongboxFileCodec.java | 10 +- .../app/strongbox/StrongboxPadding.java | 2 +- .../app/strongbox/StrongboxPayload.java | 6 +- .../strongbox/StrongboxRedundancyState.java | 2 +- .../app/strongbox/WalletEntryCodec.java | 4 +- .../app/tokens/RecognizedTokens.java | 2 +- .../tokens/StablecoinImpersonatorFilter.java | 4 +- .../app/utils/AccountTransactionUi.java | 6 +- .../app/utils/CoinUtils.java | 2 +- .../app/utils/GlobalMethods.java | 14 +- .../app/utils/GridAutoFitLayoutManager.java | 2 +- .../app/utils/NetworkPersistence.java | 12 +- .../app/utils/PrefConnect.java | 4 +- .../app/utils/SecureClipboard.java | 6 +- .../app/utils/Utility.java | 2 +- .../app/ux/SnapshotRedactor.java | 2 +- .../app/view/activities/HomeActivity.java | 136 +++++----- .../AccountPendingTransactionAdapter.java | 18 +- .../adapter/AccountTransactionAdapter.java | 18 +- .../adapter/BlockchainNetworkAdapter.java | 8 +- .../adapter/SeedWordAutoCompleteAdapter.java | 2 +- .../app/view/adapter/TokenAdapter.java | 12 +- .../app/view/adapter/WalletAdapter.java | 14 +- .../app/view/dialog/BackupPasswordDialog.java | 56 ++-- .../view/dialog/TransactionReviewDialog.java | 14 +- .../app/view/dialog/UnlockDialogs.java | 4 +- .../app/view/dialog/WaitDialog.java | 4 +- .../fragment/AccountTransactionsFragment.java | 30 +-- .../view/fragment/BackupOptionsFragment.java | 14 +- .../BlockchainNetworkAddFragment.java | 32 +-- .../BlockchainNetworkDialogFragment.java | 50 ++-- .../fragment/BlockchainNetworkFragment.java | 10 +- .../app/view/fragment/HomeMainFragment.java | 28 +- .../app/view/fragment/HomeStartFragment.java | 8 +- .../app/view/fragment/HomeWalletFragment.java | 244 +++++++++--------- .../MessageInformationDialogFragment.java | 8 +- .../app/view/fragment/ReceiveFragment.java | 12 +- .../view/fragment/RevealWalletFragment.java | 22 +- .../app/view/fragment/SendFragment.java | 98 +++---- .../app/view/fragment/SettingsFragment.java | 20 +- .../app/view/fragment/WalletsFragment.java | 50 ++-- .../widget/VerticalScrollIndicatorView.java | 2 +- .../viewmodel/BlockchainNetworkViewModel.java | 6 +- .../app/viewmodel/JsonViewModel.java | 6 +- .../app/viewmodel/KeyViewModel.java | 14 +- .../layout/account_transactions_fragment.xml | 4 +- .../main/res/layout/home_main_fragment.xml | 4 +- .../app/ExampleUnitTest.java | 2 +- .../app/LoggerFacadeLockdownTest.java | 6 +- .../app/RedactingDebugTreeTest.java | 2 +- .../app/api/read/ApiDecodingTest.java | 18 +- .../AccountBalanceRestTaskHardeningTest.java | 10 +- .../backup/BackupExecutorExportPathTest.java | 2 +- .../backup/CloudBackupManagerScanTest.java | 2 +- .../app/bridge/SendBridgeContractTest.java | 4 +- .../app/bridge/SendSurfaceLockdownTest.java | 2 +- .../app/interact/JsonInteractParityTest.java | 2 +- .../AddNetworkPersistsToStrongboxTest.java | 8 +- .../app/keystorage/MacUtilTest.java | 2 +- .../UrlBuilderHostInvariantTest.java | 4 +- .../networking/UrlBuilderLockdownTest.java | 2 +- .../app/networking/UrlBuilderTest.java | 2 +- .../BackupRestoreLimiterRecordingTest.java | 4 +- ...redentialIdentifierUsernameParityTest.java | 2 +- .../TlsPinningConnectionSpecTest.java | 2 +- .../security/UnlockAttemptLimiterTest.java | 2 +- .../WalletCreationPasswordWhitespaceTest.java | 8 +- .../DeterministicSecureRandomSource.java | 4 +- .../DeterministicSecureRandomSourceTest.java | 2 +- ...trongboxFileCodecScryptValidationTest.java | 2 +- .../app/strongbox/StrongboxPaddingTest.java | 2 +- .../app/strongbox/StrongboxPayloadV3Test.java | 2 +- .../StrongboxPortabilityVectorTest.java | 6 +- .../app/strongbox/WalletEntryCodecTest.java | 4 +- .../StablecoinImpersonatorFilterTest.java | 10 +- .../app/utils/CoinUtilsCapsTest.java | 2 +- .../SecureClipboardSeedGateLockdownTest.java | 4 +- .../HomeWalletFragmentRestoreConfirmTest.java | 20 +- tests/fixtures/strongbox-v3-vectors/INDEX.md | 2 +- 150 files changed, 857 insertions(+), 857 deletions(-) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/App.java (90%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/Logger.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/RedactingDebugTree.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/ApiCallback.java (97%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/ApiClient.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/ApiException.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/ApiResponse.java (97%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/Configuration.java (96%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/GzipRequestInterceptor.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/JSON.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/Pair.java (96%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/ProgressRequestBody.java (97%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/ProgressResponseBody.java (97%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/StringUtil.java (97%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/api/AccountsApi.java (96%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/auth/ApiKeyAuth.java (94%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/auth/Authentication.java (87%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/auth/HttpBasicAuth.java (92%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/model/AccountPendingTransactionSummary.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/model/AccountPendingTransactionSummaryResponse.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/model/AccountTokenListResponse.java (97%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/model/AccountTokenSummary.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/model/AccountTransactionSummary.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/model/AccountTransactionSummaryResponse.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/model/Balance.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/model/BalanceResponse.java (97%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/model/ErrorResponseModel.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/model/Receipt.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/model/TransactionType.java (97%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/asynctask/read/AccountBalanceRestTask.java (94%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/asynctask/read/AccountPendingTxnRestTask.java (91%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/asynctask/read/AccountTxnRestTask.java (91%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/asynctask/read/ListAccountTokensRestTask.java (90%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/backup/BackupExecutor.java (95%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/backup/CloudBackupManager.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/backup/WalletBackupAgent.java (85%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/bridge/BridgeCallback.java (71%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/bridge/QuantumCoinJSBridge.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/bridge/WebViewManager.java (94%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/entity/ErrorEnvelope.java (92%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/entity/ServiceException.java (82%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/events/NetworkChangeBroadcaster.java (96%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/interact/BlockchainNetworkInteract.java (96%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/interact/JsonInteract.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/interact/KeyInteract.java (96%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/keystorage/Aead.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/keystorage/AndroidKeystoreGenerationCounter.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/keystorage/DefaultSecureRandomSource.java (95%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/keystorage/MacUtil.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/keystorage/SecureRandomSource.java (97%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/keystorage/SecureStorage.java (92%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/keystorage/TooManyAttemptsException.java (86%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/keystorage/UnlockCoordinator.java (97%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/keystorage/WrongPasswordException.java (94%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/model/BlockchainNetwork.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/networking/NetworkSnapshot.java (97%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/networking/UrlBuilder.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/security/BundleIntegrity.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/security/CredentialIdentifier.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/security/ScreenCaptureGuard.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/security/TamperGate.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/security/TamperGatePolicy.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/security/TlsPinning.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/security/UnlockAttemptLimiter.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/security/generated/GeneratedBundleHash.java (96%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/services/IKeyService.java (95%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/services/KeyService.java (96%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/storage/AtomicSlotWriter.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/strongbox/StrongboxFileCodec.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/strongbox/StrongboxPadding.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/strongbox/StrongboxPayload.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/strongbox/StrongboxRedundancyState.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/strongbox/WalletEntryCodec.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/tokens/RecognizedTokens.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/tokens/StablecoinImpersonatorFilter.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/utils/AccountTransactionUi.java (91%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/utils/CoinUtils.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/utils/GlobalMethods.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/utils/GridAutoFitLayoutManager.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/utils/NetworkPersistence.java (97%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/utils/PrefConnect.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/utils/SecureClipboard.java (95%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/utils/Utility.java (97%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/ux/SnapshotRedactor.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/activities/HomeActivity.java (93%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/adapter/AccountPendingTransactionAdapter.java (92%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/adapter/AccountTransactionAdapter.java (93%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/adapter/BlockchainNetworkAdapter.java (94%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/adapter/SeedWordAutoCompleteAdapter.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/adapter/TokenAdapter.java (92%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/adapter/WalletAdapter.java (93%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/dialog/BackupPasswordDialog.java (92%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/dialog/TransactionReviewDialog.java (96%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/dialog/UnlockDialogs.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/dialog/WaitDialog.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/fragment/AccountTransactionsFragment.java (96%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/fragment/BackupOptionsFragment.java (94%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/fragment/BlockchainNetworkAddFragment.java (96%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/fragment/BlockchainNetworkDialogFragment.java (90%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/fragment/BlockchainNetworkFragment.java (95%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/fragment/HomeMainFragment.java (96%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/fragment/HomeStartFragment.java (98%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/fragment/HomeWalletFragment.java (95%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/fragment/MessageInformationDialogFragment.java (94%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/fragment/ReceiveFragment.java (95%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/fragment/RevealWalletFragment.java (97%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/fragment/SendFragment.java (95%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/fragment/SettingsFragment.java (93%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/fragment/WalletsFragment.java (90%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/view/widget/VerticalScrollIndicatorView.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/viewmodel/BlockchainNetworkViewModel.java (91%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/viewmodel/JsonViewModel.java (99%) rename app/src/main/java/com/{quantumcoinwallet => quantumcoin}/app/viewmodel/KeyViewModel.java (92%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/ExampleUnitTest.java (90%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/LoggerFacadeLockdownTest.java (96%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/RedactingDebugTreeTest.java (98%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/api/read/ApiDecodingTest.java (91%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/asynctask/read/AccountBalanceRestTaskHardeningTest.java (95%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/backup/BackupExecutorExportPathTest.java (99%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/backup/CloudBackupManagerScanTest.java (99%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/bridge/SendBridgeContractTest.java (98%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/bridge/SendSurfaceLockdownTest.java (98%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/interact/JsonInteractParityTest.java (99%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/keystorage/AddNetworkPersistsToStrongboxTest.java (96%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/keystorage/MacUtilTest.java (98%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/networking/UrlBuilderHostInvariantTest.java (98%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/networking/UrlBuilderLockdownTest.java (98%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/networking/UrlBuilderTest.java (96%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/security/BackupRestoreLimiterRecordingTest.java (98%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/security/CredentialIdentifierUsernameParityTest.java (99%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/security/TlsPinningConnectionSpecTest.java (99%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/security/UnlockAttemptLimiterTest.java (98%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/security/WalletCreationPasswordWhitespaceTest.java (95%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/strongbox/DeterministicSecureRandomSource.java (96%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/strongbox/DeterministicSecureRandomSourceTest.java (98%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/strongbox/StrongboxFileCodecScryptValidationTest.java (99%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/strongbox/StrongboxPaddingTest.java (99%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/strongbox/StrongboxPayloadV3Test.java (99%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/strongbox/StrongboxPortabilityVectorTest.java (98%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/strongbox/WalletEntryCodecTest.java (98%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/tokens/StablecoinImpersonatorFilterTest.java (97%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/utils/CoinUtilsCapsTest.java (98%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/utils/SecureClipboardSeedGateLockdownTest.java (99%) rename app/src/test/java/com/{quantumcoinwallet => quantumcoin}/app/view/fragment/HomeWalletFragmentRestoreConfirmTest.java (98%) diff --git a/README.md b/README.md index 298cbb1..d7247f3 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ signed transaction is reproducible across both clients. - **Multiple wallets per install.** Stored in a single layered-encrypted strongbox; each wallet is addressable via the Wallets screen - ([`view/fragment/WalletsFragment.java`](app/src/main/java/com/quantumcoinwallet/app/view/fragment/WalletsFragment.java)). + ([`view/fragment/WalletsFragment.java`](app/src/main/java/com/quantumcoin/app/view/fragment/WalletsFragment.java)). - **New wallet creation** with a 32-word seed phrase (`QuantumCoinSDK.Wallet.createRandom` → `SeedWordsSDK.getWordListFromSeedArray`). Seed verification quiz @@ -73,7 +73,7 @@ signed transaction is reproducible across both clients. - **Restore from `.wallet` backup file** — single file or a folder via the Storage Access Framework; batched password prompt walks through every wallet in the picked location - ([`backup/CloudBackupManager.java`](app/src/main/java/com/quantumcoinwallet/app/backup/CloudBackupManager.java)). + ([`backup/CloudBackupManager.java`](app/src/main/java/com/quantumcoin/app/backup/CloudBackupManager.java)). - **Reveal seed words** (gated by tap-to-reveal + `setImportantForAccessibility(NO_HIDE_DESCENDANTS)` so TalkBack never reads the words aloud, plus @@ -93,18 +93,18 @@ signed transaction is reproducible across both clients. Tokens** tabs; impersonator filter blocks any token whose symbol or name resembles a stablecoin unless the contract is on the recognized allow-list - ([`tokens/RecognizedTokens.java`](app/src/main/java/com/quantumcoinwallet/app/tokens/RecognizedTokens.java), - [`tokens/StablecoinImpersonatorFilter.java`](app/src/main/java/com/quantumcoinwallet/app/tokens/StablecoinImpersonatorFilter.java)). + ([`tokens/RecognizedTokens.java`](app/src/main/java/com/quantumcoin/app/tokens/RecognizedTokens.java), + [`tokens/StablecoinImpersonatorFilter.java`](app/src/main/java/com/quantumcoin/app/tokens/StablecoinImpersonatorFilter.java)). - **Transaction review dialog** with checksum-cased addresses, fee summary, and explicit contract-address row for token sends - ([`view/fragment/SendFragment.java`](app/src/main/java/com/quantumcoinwallet/app/view/fragment/SendFragment.java)). + ([`view/fragment/SendFragment.java`](app/src/main/java/com/quantumcoin/app/view/fragment/SendFragment.java)). - **QR-code scanning** for recipient addresses via CameraX + ML Kit Barcode Scanning (`android.permission.CAMERA` declared in `AndroidManifest.xml`). - **Receive screen** with a `quantumcoin:` URI QR code and a centred copy-to-clipboard control with 30-second auto-clear - ([`view/fragment/ReceiveFragment.java`](app/src/main/java/com/quantumcoinwallet/app/view/fragment/ReceiveFragment.java), - [`utils/SecureClipboard.java`](app/src/main/java/com/quantumcoinwallet/app/utils/SecureClipboard.java)). + ([`view/fragment/ReceiveFragment.java`](app/src/main/java/com/quantumcoin/app/view/fragment/ReceiveFragment.java), + [`utils/SecureClipboard.java`](app/src/main/java/com/quantumcoin/app/utils/SecureClipboard.java)). ### Network configuration @@ -116,12 +116,12 @@ signed transaction is reproducible across both clients. re-asserted at "Submit" time via a `NetworkSnapshot` so a network switch in the middle of the signing flow aborts rather than producing a mis-bound transaction - ([`networking/NetworkSnapshot.java`](app/src/main/java/com/quantumcoinwallet/app/networking/NetworkSnapshot.java)). + ([`networking/NetworkSnapshot.java`](app/src/main/java/com/quantumcoin/app/networking/NetworkSnapshot.java)). - **Live network-change notifications** via `LocalBroadcastManager` push the new active network into every visible Fragment without an Activity restart; the broadcaster is process-local by design so other apps cannot observe or forge network-state events - ([`events/NetworkChangeBroadcaster.java`](app/src/main/java/com/quantumcoinwallet/app/events/NetworkChangeBroadcaster.java)). + ([`events/NetworkChangeBroadcaster.java`](app/src/main/java/com/quantumcoin/app/events/NetworkChangeBroadcaster.java)). ### Backup and restore @@ -135,7 +135,7 @@ signed transaction is reproducible across both clients. `Uri` permission grant; an explicit "submitted to cloud, sync may take time" dialog runs after cloud writes so the user knows the file isn't yet on the provider's servers - ([`backup/CloudBackupManager.java`](app/src/main/java/com/quantumcoinwallet/app/backup/CloudBackupManager.java)). + ([`backup/CloudBackupManager.java`](app/src/main/java/com/quantumcoin/app/backup/CloudBackupManager.java)). - **Restore from cloud folder** enumerates `.wallet` files in the remembered folder and runs the same batched-decrypt loop the file restore uses. @@ -147,7 +147,7 @@ signed transaction is reproducible across both clients. immediately calls `BackupManager.dataChanged()` so the include rule takes effect on the next backup cycle without waiting for the next strongbox write - ([`backup/WalletBackupAgent.java`](app/src/main/java/com/quantumcoinwallet/app/backup/WalletBackupAgent.java)). + ([`backup/WalletBackupAgent.java`](app/src/main/java/com/quantumcoin/app/backup/WalletBackupAgent.java)). - **Cross-platform backup compatibility.** Per-wallet exported `.wallet` files are produced by the shared `quantumcoin-bundle.js` `Wallet.encryptSync` call on both @@ -166,8 +166,8 @@ signed transaction is reproducible across both clients. - English (`en_us`) localization with 230+ keys ([`app/src/main/res/raw/en_us.json`](app/src/main/res/raw/en_us.json), - [`interact/JsonInteract.java`](app/src/main/java/com/quantumcoinwallet/app/interact/JsonInteract.java), - [`viewmodel/JsonViewModel.java`](app/src/main/java/com/quantumcoinwallet/app/viewmodel/JsonViewModel.java)). + [`interact/JsonInteract.java`](app/src/main/java/com/quantumcoin/app/interact/JsonInteract.java), + [`viewmodel/JsonViewModel.java`](app/src/main/java/com/quantumcoin/app/viewmodel/JsonViewModel.java)). - TalkBack / accessibility deliberately suppressed on the four seed-handling surfaces (reveal, new-seed, verify, restore) via `setImportantForAccessibility(NO_HIDE_DESCENDANTS)` so the @@ -197,12 +197,12 @@ contract. - **AES-256-GCM** for every encrypted-at-rest blob, in a single Java owner so there is one review surface for AEAD usage - ([`keystorage/Aead.java`](app/src/main/java/com/quantumcoinwallet/app/keystorage/Aead.java)). + ([`keystorage/Aead.java`](app/src/main/java/com/quantumcoin/app/keystorage/Aead.java)). - **scrypt KDF** at `N=2^18, r=8, p=1, keyLen=32` — runs inside the shared JS bundle so the Android and iOS wallets derive identical keys for identical passwords. Min-bound enforced at the bridge boundary so a future debug-weakened call fails loud - ([`bridge/QuantumCoinJSBridge.java`](app/src/main/java/com/quantumcoinwallet/app/bridge/QuantumCoinJSBridge.java), + ([`bridge/QuantumCoinJSBridge.java`](app/src/main/java/com/quantumcoin/app/bridge/QuantumCoinJSBridge.java), [`app/src/main/assets/bridge.html`](app/src/main/assets/bridge.html) `scryptDerive`). - **Brute-force lockout** with a stair-step backoff (typo-tolerant for the first four attempts; 30 s, 60 s, 2 min, @@ -220,8 +220,8 @@ contract. flows in `HomeWalletFragment` (`STRONGBOX_UNLOCK` and `BACKUP_DECRYPT` channels) so an attacker cannot bypass the rate limit by mounting attempts through the restore dialog - ([`security/UnlockAttemptLimiter.java`](app/src/main/java/com/quantumcoinwallet/app/security/UnlockAttemptLimiter.java), - [`view/fragment/HomeWalletFragment.java`](app/src/main/java/com/quantumcoinwallet/app/view/fragment/HomeWalletFragment.java) + ([`security/UnlockAttemptLimiter.java`](app/src/main/java/com/quantumcoin/app/security/UnlockAttemptLimiter.java), + [`view/fragment/HomeWalletFragment.java`](app/src/main/java/com/quantumcoin/app/view/fragment/HomeWalletFragment.java) `attemptBatchDecrypt` / `performRestoreFromUri`). - **Tamper gate** — multi-signal root / debugger-attached / Frida detector. Requires ≥2 independent root signals before flagging; @@ -230,7 +230,7 @@ contract. (`QuantumCoinJSBridge.sendTransaction`) calls `TamperGate.assertSafeToSign()` before the private key reaches the bridge - ([`security/TamperGate.java`](app/src/main/java/com/quantumcoinwallet/app/security/TamperGate.java)). + ([`security/TamperGate.java`](app/src/main/java/com/quantumcoin/app/security/TamperGate.java)). - **JS bundle SHA-256 pin** — the bundle owns every signing primitive, so its bytes are hashed at build time by the `embedBundleHash` Gradle task, embedded in @@ -238,7 +238,7 @@ contract. and inherits the APK signature), re-hashed at runtime, and the bridge refuses to initialize on mismatch ([`app/build.gradle`](app/build.gradle) `embedBundleHash`, - [`security/BundleIntegrity.java`](app/src/main/java/com/quantumcoinwallet/app/security/BundleIntegrity.java)). + [`security/BundleIntegrity.java`](app/src/main/java/com/quantumcoin/app/security/BundleIntegrity.java)). - **Binary key channel** between Java and JS — private/public key bytes stage as `Uint8Array` via a synchronous custom-scheme pull rather than base64 strings, so JS can `.fill(0)` them @@ -247,8 +247,8 @@ contract. `pullPayloadBinary`) is grep-guarded by a CI test that fails the build if a sensitive arg is ever passed inline through `evaluateJavascript` - ([`bridge/QuantumCoinJSBridge.java`](app/src/main/java/com/quantumcoinwallet/app/bridge/QuantumCoinJSBridge.java), - [`app/src/test/java/com/quantumcoinwallet/app/bridge/SendSurfaceLockdownTest.java`](app/src/test/java/com/quantumcoinwallet/app/bridge/SendSurfaceLockdownTest.java)). + ([`bridge/QuantumCoinJSBridge.java`](app/src/main/java/com/quantumcoin/app/bridge/QuantumCoinJSBridge.java), + [`app/src/test/java/com/quantumcoin/app/bridge/SendSurfaceLockdownTest.java`](app/src/test/java/com/quantumcoin/app/bridge/SendSurfaceLockdownTest.java)). - **Strict TLS 1.3-only floor on every Java/Kotlin TLS client.** `TlsPinning.applyTo(...)` installs an explicit `ConnectionSpec` built from `RESTRICTED_TLS` and narrowed to @@ -260,7 +260,7 @@ contract. floor that guarantees the platform `SSLEngine` can negotiate TLS 1.3 natively, so the strict requirement never starves a legitimate device - ([`security/TlsPinning.java`](app/src/main/java/com/quantumcoinwallet/app/security/TlsPinning.java) `TLS_1_3_ONLY`, + ([`security/TlsPinning.java`](app/src/main/java/com/quantumcoin/app/security/TlsPinning.java) `TLS_1_3_ONLY`, [`app/build.gradle`](app/build.gradle) `minSdk`). - **Post-quantum hybrid key exchange (Android 14+).** The strict spec inherits the cipher-suite allow-list from `RESTRICTED_TLS` @@ -288,7 +288,7 @@ contract. the RPC would hard-code centralization that the project explicitly rejects. Baseline TLS chain validation still applies on every endpoint - ([`security/TlsPinning.java`](app/src/main/java/com/quantumcoinwallet/app/security/TlsPinning.java)). + ([`security/TlsPinning.java`](app/src/main/java/com/quantumcoin/app/security/TlsPinning.java)). - **Strict hostname verification** on every `ApiClient` HTTPS request. The `ApiClient.applySslSettings()` builder intentionally does NOT call `.hostnameVerifier(...)` — by @@ -297,7 +297,7 @@ contract. `OkHostnameVerifier.INSTANCE` (strict RFC 2818 / RFC 6125 hostname matching against SubjectAlternativeName entries). A Javadoc-grade audit comment in - [`ApiClient.java`](app/src/main/java/com/quantumcoinwallet/app/api/read/ApiClient.java) + [`ApiClient.java`](app/src/main/java/com/quantumcoin/app/api/read/ApiClient.java) documents the contract and bans any future `NoopHostnameVerifier`-style regression. - **Network-security config** declares `usesCleartextTraffic=false` @@ -310,7 +310,7 @@ contract. - **Two-slot rotating writer** for the strongbox file, so a power cut between rename and journal-flush still leaves a valid previous-good slot - ([`storage/AtomicSlotWriter.java`](app/src/main/java/com/quantumcoinwallet/app/storage/AtomicSlotWriter.java)). + ([`storage/AtomicSlotWriter.java`](app/src/main/java/com/quantumcoin/app/storage/AtomicSlotWriter.java)). - **`FileChannel.force(true)`** on every persisted file (the Android equivalent of iOS `F_FULLFSYNC`) so bytes reach the storage media, not just the page cache. The parent directory @@ -324,12 +324,12 @@ contract. - **File-level MAC** with a UI-block hash binding so an attacker who swaps slot files' UI prefs cannot re-bind them under the original MAC - ([`strongbox/StrongboxFileCodec.java`](app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxFileCodec.java)). + ([`strongbox/StrongboxFileCodec.java`](app/src/main/java/com/quantumcoin/app/strongbox/StrongboxFileCodec.java)). - **Anti-rollback generation counter** — every successful unlock validates a monotonic generation HMAC bound to an AndroidKeystore-resident key, so a slot file copied off the device and replayed is rejected at the next unlock - ([`keystorage/MacUtil.java`](app/src/main/java/com/quantumcoinwallet/app/keystorage/MacUtil.java)). + ([`keystorage/MacUtil.java`](app/src/main/java/com/quantumcoin/app/keystorage/MacUtil.java)). - **App-private `Context.getFilesDir()/strongbox/`** for every slot file. Auto-Backup inclusion is governed explicitly by [`app/src/main/res/xml/backup_rules.xml`](app/src/main/res/xml/backup_rules.xml) @@ -339,7 +339,7 @@ contract. encrypted file size leaks no information about the wallet count. The bucket is sized to comfortably hold ≥256 wallets with PQC private/public key pairs (≈10 KiB each) - ([`strongbox/StrongboxPadding.java`](app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxPadding.java)). + ([`strongbox/StrongboxPadding.java`](app/src/main/java/com/quantumcoin/app/strongbox/StrongboxPadding.java)). ### UI hardening @@ -348,28 +348,28 @@ contract. Callbacks.onActivityPaused` / removed in `onActivityResumed`, so the system-captured Recents card never contains seed words, balances, or addresses - ([`ux/SnapshotRedactor.java`](app/src/main/java/com/quantumcoinwallet/app/ux/SnapshotRedactor.java)). + ([`ux/SnapshotRedactor.java`](app/src/main/java/com/quantumcoin/app/ux/SnapshotRedactor.java)). - **`FLAG_SECURE` audit** across every Activity that may render a seed phrase, so the OS refuses to include the screen in screenshots, screen recordings, and casts - ([`view/activities/HomeActivity.java`](app/src/main/java/com/quantumcoinwallet/app/view/activities/HomeActivity.java)). + ([`view/activities/HomeActivity.java`](app/src/main/java/com/quantumcoin/app/view/activities/HomeActivity.java)). - **Screen-capture observer** uses `DisplayManager` to detect secondary displays / mirroring and exposes an `isCapturing` signal that seed surfaces consult on every API level (no API 33+ requirement) - ([`security/ScreenCaptureGuard.java`](app/src/main/java/com/quantumcoinwallet/app/security/ScreenCaptureGuard.java)). + ([`security/ScreenCaptureGuard.java`](app/src/main/java/com/quantumcoin/app/security/ScreenCaptureGuard.java)). - **Clipboard auto-expiry** for copied seed phrases (30s countdown; cleared on view-disappear); copied addresses go through the same `SecureClipboard` facade so a future blanket policy change has one entry point - ([`utils/SecureClipboard.java`](app/src/main/java/com/quantumcoinwallet/app/utils/SecureClipboard.java)). + ([`utils/SecureClipboard.java`](app/src/main/java/com/quantumcoin/app/utils/SecureClipboard.java)). - **Token impersonation defenses** — recognized-token allow-list by **contract address** (not name/symbol), plus a stablecoin impersonator hard-suppressor that blocks any token whose label resembles `USDT` / `USDC` / `Tether` / etc. unless its contract is on the allow-list - ([`tokens/RecognizedTokens.java`](app/src/main/java/com/quantumcoinwallet/app/tokens/RecognizedTokens.java), - [`tokens/StablecoinImpersonatorFilter.java`](app/src/main/java/com/quantumcoinwallet/app/tokens/StablecoinImpersonatorFilter.java)). + ([`tokens/RecognizedTokens.java`](app/src/main/java/com/quantumcoin/app/tokens/RecognizedTokens.java), + [`tokens/StablecoinImpersonatorFilter.java`](app/src/main/java/com/quantumcoin/app/tokens/StablecoinImpersonatorFilter.java)). - **Network-snapshot capture at Review time** — the chain id and RPC endpoint the user confirmed are re-asserted at Submit time via `NetworkSnapshot`; a network switch mid-flight aborts @@ -377,12 +377,12 @@ contract. - **Logger facade** — every direct `android.util.Log.*` and `Timber.tag(...).*` call in security-sensitive files is routed through a single - [`Logger`](app/src/main/java/com/quantumcoinwallet/app/Logger.java) + [`Logger`](app/src/main/java/com/quantumcoin/app/Logger.java) facade. Release builds drop VERBOSE/DEBUG/INFO entirely and replace WARN/ERROR payload with an `evt` marker; debug builds apply address / tx-hash / long-hex / base64 redaction before the message reaches logcat. A CI grep guard - ([`LoggerFacadeLockdownTest`](app/src/test/java/com/quantumcoinwallet/app/LoggerFacadeLockdownTest.java)) + ([`LoggerFacadeLockdownTest`](app/src/test/java/com/quantumcoin/app/LoggerFacadeLockdownTest.java)) fails the build if a stray direct `Log.*` call slips into a security-sensitive file. @@ -423,11 +423,11 @@ invariant tests. | Layer | Responsibility | Source | | --- | --- | --- | -| L1 — Storage | Two-slot atomic-rotate with deep verify | [`storage/AtomicSlotWriter.java`](app/src/main/java/com/quantumcoinwallet/app/storage/AtomicSlotWriter.java) | -| L2 — Schema | Outer file envelope, file-level MAC, padding | [`strongbox/StrongboxFileCodec.java`](app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxFileCodec.java), [`strongbox/StrongboxPadding.java`](app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxPadding.java) | -| L3 — Crypto | AES-256-GCM (JCE), HMAC-SHA-256 (JCE), HKDF-SHA-256 (BouncyCastle), scrypt (JS SDK) | [`keystorage/Aead.java`](app/src/main/java/com/quantumcoinwallet/app/keystorage/Aead.java), [`keystorage/MacUtil.java`](app/src/main/java/com/quantumcoinwallet/app/keystorage/MacUtil.java), bridge `scryptDerive` ([`assets/bridge.html`](app/src/main/assets/bridge.html)) | -| L4 — Unlock coordinator | scrypt → unwrap mainKey → install snapshot; re-derive per write; zeroize | [`keystorage/UnlockCoordinator.java`](app/src/main/java/com/quantumcoinwallet/app/keystorage/UnlockCoordinator.java) | -| L5 — Strongbox accessor | In-memory typed snapshot, inner checksum, per-wallet wire codec | [`keystorage/SecureStorage.java`](app/src/main/java/com/quantumcoinwallet/app/keystorage/SecureStorage.java), [`strongbox/StrongboxPayload.java`](app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxPayload.java), [`strongbox/WalletEntryCodec.java`](app/src/main/java/com/quantumcoinwallet/app/strongbox/WalletEntryCodec.java) | +| L1 — Storage | Two-slot atomic-rotate with deep verify | [`storage/AtomicSlotWriter.java`](app/src/main/java/com/quantumcoin/app/storage/AtomicSlotWriter.java) | +| L2 — Schema | Outer file envelope, file-level MAC, padding | [`strongbox/StrongboxFileCodec.java`](app/src/main/java/com/quantumcoin/app/strongbox/StrongboxFileCodec.java), [`strongbox/StrongboxPadding.java`](app/src/main/java/com/quantumcoin/app/strongbox/StrongboxPadding.java) | +| L3 — Crypto | AES-256-GCM (JCE), HMAC-SHA-256 (JCE), HKDF-SHA-256 (BouncyCastle), scrypt (JS SDK) | [`keystorage/Aead.java`](app/src/main/java/com/quantumcoin/app/keystorage/Aead.java), [`keystorage/MacUtil.java`](app/src/main/java/com/quantumcoin/app/keystorage/MacUtil.java), bridge `scryptDerive` ([`assets/bridge.html`](app/src/main/assets/bridge.html)) | +| L4 — Unlock coordinator | scrypt → unwrap mainKey → install snapshot; re-derive per write; zeroize | [`keystorage/UnlockCoordinator.java`](app/src/main/java/com/quantumcoin/app/keystorage/UnlockCoordinator.java) | +| L5 — Strongbox accessor | In-memory typed snapshot, inner checksum, per-wallet wire codec | [`keystorage/SecureStorage.java`](app/src/main/java/com/quantumcoin/app/keystorage/SecureStorage.java), [`strongbox/StrongboxPayload.java`](app/src/main/java/com/quantumcoin/app/strongbox/StrongboxPayload.java), [`strongbox/WalletEntryCodec.java`](app/src/main/java/com/quantumcoin/app/strongbox/WalletEntryCodec.java) | ### 2. On-disk slot layout (L1) @@ -447,7 +447,7 @@ invariant tests. The slot file is a single canonical UTF-8 JSON object built by the hand-rolled `canonicalize` / `writeCanonical` serializer in -[`strongbox/StrongboxFileCodec.java`](app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxFileCodec.java) +[`strongbox/StrongboxFileCodec.java`](app/src/main/java/com/quantumcoin/app/strongbox/StrongboxFileCodec.java) to guarantee the same sorted-key byte sequence iOS produces with `JSONSerialization(opts:[.sortedKeys])`. There are no fixed binary offsets at the slot layer. @@ -493,9 +493,9 @@ indirectly via `uiBlockHash = SHA-256(canonical(ui))`. | Primitive | Parameters | Source | | --- | --- | --- | -| AEAD | AES-256-GCM via `javax.crypto.Cipher.getInstance("AES/GCM/NoPadding")`. Nonce 12 bytes, random per seal (`SecureRandom.nextBytes`). Tag 16 bytes (128 bits). AAD: empty | [`keystorage/Aead.java`](app/src/main/java/com/quantumcoinwallet/app/keystorage/Aead.java) | -| KDF | scrypt with `N = 262144 (2^18)`, `r = 8`, `p = 1`, `dkLen = 32`. Salt 32 bytes generated by `SecureRandom.nextBytes` at strongbox bootstrap, persisted in `kdf.salt`, then reused for the lifetime of the strongbox. The scrypt implementation is the JS SDK's `scryptSync` invoked through the bridge | [`keystorage/UnlockCoordinator.java`](app/src/main/java/com/quantumcoinwallet/app/keystorage/UnlockCoordinator.java) `deriveKeyViaScrypt`, [`assets/bridge.html`](app/src/main/assets/bridge.html) `scryptDerive` | -| File MAC | HMAC-SHA-256 (32-byte tag) via JCE `javax.crypto.Mac` | [`keystorage/MacUtil.java`](app/src/main/java/com/quantumcoinwallet/app/keystorage/MacUtil.java) | +| AEAD | AES-256-GCM via `javax.crypto.Cipher.getInstance("AES/GCM/NoPadding")`. Nonce 12 bytes, random per seal (`SecureRandom.nextBytes`). Tag 16 bytes (128 bits). AAD: empty | [`keystorage/Aead.java`](app/src/main/java/com/quantumcoin/app/keystorage/Aead.java) | +| KDF | scrypt with `N = 262144 (2^18)`, `r = 8`, `p = 1`, `dkLen = 32`. Salt 32 bytes generated by `SecureRandom.nextBytes` at strongbox bootstrap, persisted in `kdf.salt`, then reused for the lifetime of the strongbox. The scrypt implementation is the JS SDK's `scryptSync` invoked through the bridge | [`keystorage/UnlockCoordinator.java`](app/src/main/java/com/quantumcoin/app/keystorage/UnlockCoordinator.java) `deriveKeyViaScrypt`, [`assets/bridge.html`](app/src/main/assets/bridge.html) `scryptDerive` | +| File MAC | HMAC-SHA-256 (32-byte tag) via JCE `javax.crypto.Mac` | [`keystorage/MacUtil.java`](app/src/main/java/com/quantumcoin/app/keystorage/MacUtil.java) | | MAC-key derivation | `macKey = HKDF-SHA-256(IKM = mainKey, salt = kdf.salt, info = "integrity-v2", L = 32)` via BouncyCastle `HKDFBytesGenerator` (RFC 5869 Extract+Expand). BouncyCastle is FIPS 140-2 certified and eliminates hand-rolled Extract+Expand loops. Byte-exact compatible with iOS CryptoKit `HKDF` | constant `MacUtil.INTEGRITY_INFO_LABEL` | `mainKey` is a fresh 32-byte value produced once at strongbox @@ -519,7 +519,7 @@ unpad(7816-4) ──► canonicalJSON(StrongboxPayload) - `derivedKey` is materialised inside every `unlock` and every `persist` call. It is wiped via `Arrays.fill(derivedKey, (byte) 0);` in a `finally` block in - the same scope ([`UnlockCoordinator.java`](app/src/main/java/com/quantumcoinwallet/app/keystorage/UnlockCoordinator.java)). + the same scope ([`UnlockCoordinator.java`](app/src/main/java/com/quantumcoin/app/keystorage/UnlockCoordinator.java)). - `mainKey` is materialised on each unlock and on each persist. It is wiped in the same `finally` block. It is **never** stored on a field after the function exits — the persist @@ -544,7 +544,7 @@ The 4 MiB bucket comfortably holds ≥256 wallets with Dilithium-class private keys (≈7.5 KiB raw) and public keys (≈2.5 KiB raw). Round-trip and bucket-fill invariants are tested in -[`strongbox/StrongboxPaddingTest.java`](app/src/test/java/com/quantumcoinwallet/app/strongbox/StrongboxPaddingTest.java) +[`strongbox/StrongboxPaddingTest.java`](app/src/test/java/com/quantumcoin/app/strongbox/StrongboxPaddingTest.java) and the `WalletEntryCodecTest` 256-wallet packing test. ### 7. Plaintext payload (L5) @@ -555,7 +555,7 @@ shape. The shape is unified across Android and iOS: same field names, same ordering rules, same encoding of the per-wallet binary blobs. Canonical sorted keys are used for the inner checksum compute (`disableHtmlEscaping`, `serializeNulls` per -[`strongbox/StrongboxPayload.java`](app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxPayload.java)); +[`strongbox/StrongboxPayload.java`](app/src/main/java/com/quantumcoin/app/strongbox/StrongboxPayload.java)); the AEAD seal does not require a canonical encoding because the AEAD tag commits to the byte sequence. @@ -611,9 +611,9 @@ Each entry inside `wallets[]` is a base64-wrapped length-prefixed binary blob. **All multi-byte integers are big-endian.** This format is shared byte-for-byte with the iOS wallet — see -[`strongbox/WalletEntryCodec.java`](app/src/main/java/com/quantumcoinwallet/app/strongbox/WalletEntryCodec.java) +[`strongbox/WalletEntryCodec.java`](app/src/main/java/com/quantumcoin/app/strongbox/WalletEntryCodec.java) and the round-trip + 256-wallet packing tests in -[`strongbox/WalletEntryCodecTest.java`](app/src/test/java/com/quantumcoinwallet/app/strongbox/WalletEntryCodecTest.java). +[`strongbox/WalletEntryCodecTest.java`](app/src/test/java/com/quantumcoin/app/strongbox/WalletEntryCodecTest.java). | Offset | Field | Width | Encoding | | --- | --- | --- | --- | @@ -645,7 +645,7 @@ base64 wrap and length-prefixes raw bytes directly. | --- | --- | | In-slot field | `generation` integer in the outer JSON (incremented by exactly +1 per `writeNewGeneration`) | | Out-of-band binding | HMAC-SHA-256 over the 8-byte big-endian counter under an AndroidKeystore-resident, non-extractable key (alias `qc-strongbox-generation-counter-hmac-v1`). The counter+tag pair is persisted as `":"` in `SharedPreferences` file `qc_strongbox_counter_v1`, key `STRONGBOX_GENERATION_COUNTER` | -| Implementation | [`keystorage/AndroidKeystoreGenerationCounter.java`](app/src/main/java/com/quantumcoinwallet/app/keystorage/AndroidKeystoreGenerationCounter.java); StrongBox-backed when `setIsStrongBoxBacked(true)` succeeds (API ≥ 28), software-Keystore otherwise | +| Implementation | [`keystorage/AndroidKeystoreGenerationCounter.java`](app/src/main/java/com/quantumcoin/app/keystorage/AndroidKeystoreGenerationCounter.java); StrongBox-backed when `setIsStrongBoxBacked(true)` succeeds (API ≥ 28), software-Keystore otherwise | | On unlock | `UnlockCoordinator` rejects the slot if `slotGeneration < storedCounter` AFTER verifying the stored tag matches the stored counter under the Keystore key | | Heal-forward | A first-launch device with no stored counter seeds it from the slot's `generation` so a fresh restore-from-Auto-Backup is accepted; subsequent rollback attempts are rejected. The pref file is excluded from Auto-Backup so a migrated device always re-seeds from the restored slot | @@ -664,14 +664,14 @@ delay; 5 → 30 s; 6 → 60 s; 7 → 120 s; ≥8 capped at 300 s. The limiter is consulted at strongbox-unlock and at backup-decrypt on the same shared counter so the restore dialog cannot be used to bypass the unlock-dialog rate limit. Source: -[`security/UnlockAttemptLimiter.java`](app/src/main/java/com/quantumcoinwallet/app/security/UnlockAttemptLimiter.java). +[`security/UnlockAttemptLimiter.java`](app/src/main/java/com/quantumcoin/app/security/UnlockAttemptLimiter.java). ### 11. Out-of-strongbox metadata (`PrefConnect`) The non-secret app preferences live in app-private `SharedPreferences` file `DP_QUANTUM_COIN_WALLET_APP_PREF.xml`, managed by -[`utils/PrefConnect.java`](app/src/main/java/com/quantumcoinwallet/app/utils/PrefConnect.java). +[`utils/PrefConnect.java`](app/src/main/java/com/quantumcoin/app/utils/PrefConnect.java). The allowlist: | Key | Reason it is here, not in the strongbox | @@ -708,7 +708,7 @@ device migration; on the new device the counter is heal-forwarded from the restored slot's `generation` field). The runtime gate in -[`backup/WalletBackupAgent.java`](app/src/main/java/com/quantumcoinwallet/app/backup/WalletBackupAgent.java) +[`backup/WalletBackupAgent.java`](app/src/main/java/com/quantumcoin/app/backup/WalletBackupAgent.java) inspects `BACKUP_ENABLED_KEY` before delegating to `super.onFullBackup`, so even with `android:allowBackup="true"` in the manifest nothing leaves the device unless the user @@ -721,7 +721,7 @@ is a different format. It is produced and consumed by the shared `QuantumCoinSDK.Wallet.encryptSync` / `Wallet.decryptSync` calls in `quantumcoin-bundle.js`, called from -[`bridge/QuantumCoinJSBridge.java`](app/src/main/java/com/quantumcoinwallet/app/bridge/QuantumCoinJSBridge.java). +[`bridge/QuantumCoinJSBridge.java`](app/src/main/java/com/quantumcoin/app/bridge/QuantumCoinJSBridge.java). It is a Web3-Secret-Storage-style JSON blob (scrypt KDF, AES + MAC, address-bound) keyed by a user-supplied **backup password** that is collected separately from the strongbox @@ -729,7 +729,7 @@ password and may legitimately differ. The `.wallet` envelope is byte-equivalent across iOS and Android (both call the same JS SDK), which is why the per-wallet backup file format **is** cross-platform restorable. See -[`backup/CloudBackupManager.java`](app/src/main/java/com/quantumcoinwallet/app/backup/CloudBackupManager.java) +[`backup/CloudBackupManager.java`](app/src/main/java/com/quantumcoin/app/backup/CloudBackupManager.java) for the file naming and folder enumeration; the JSON shape itself is owned by the SDK package. @@ -737,7 +737,7 @@ itself is owned by the SDK package. The binding portability contract is the seeded vector suite: -- Android: `app/src/test/java/com/quantumcoinwallet/app/strongbox/StrongboxPortabilityVectorTest.java` +- Android: `app/src/test/java/com/quantumcoin/app/strongbox/StrongboxPortabilityVectorTest.java` - iOS: `QuantumCoinWalletTests/StrongboxLayerTests.swift` - Shared seed note: `tests/fixtures/strongbox-v3-vectors/INDEX.md` @@ -890,9 +890,9 @@ the one shipped by the iOS wallet at | Library | Used for | | --- | --- | | `androidx.appcompat` / `material` / `constraintlayout` / `recyclerview` / `cardview` | Every screen, every dialog | -| `androidx.webkit` + `WebView` | The single in-process `WebView` that hosts `bridge.html` ([`bridge/WebViewManager.java`](app/src/main/java/com/quantumcoinwallet/app/bridge/WebViewManager.java)) | -| Java `javax.crypto` (AES-GCM) + `java.security` (SHA-256, HMAC) | AES-256-GCM seal/open, hashing, file MAC ([`keystorage/Aead.java`](app/src/main/java/com/quantumcoinwallet/app/keystorage/Aead.java)) | -| BouncyCastle (`org.bouncycastle:bcprov-jdk18on`) | FIPS 140-2 certified HKDF-SHA-256 implementation (RFC 5869 Extract+Expand) for MAC-key derivation. Eliminates hand-rolled cryptography. Byte-exact compatible with iOS CryptoKit ([`keystorage/MacUtil.java`](app/src/main/java/com/quantumcoinwallet/app/keystorage/MacUtil.java)) | +| `androidx.webkit` + `WebView` | The single in-process `WebView` that hosts `bridge.html` ([`bridge/WebViewManager.java`](app/src/main/java/com/quantumcoin/app/bridge/WebViewManager.java)) | +| Java `javax.crypto` (AES-GCM) + `java.security` (SHA-256, HMAC) | AES-256-GCM seal/open, hashing, file MAC ([`keystorage/Aead.java`](app/src/main/java/com/quantumcoin/app/keystorage/Aead.java)) | +| BouncyCastle (`org.bouncycastle:bcprov-jdk18on`) | FIPS 140-2 certified HKDF-SHA-256 implementation (RFC 5869 Extract+Expand) for MAC-key derivation. Eliminates hand-rolled cryptography. Byte-exact compatible with iOS CryptoKit ([`keystorage/MacUtil.java`](app/src/main/java/com/quantumcoin/app/keystorage/MacUtil.java)) | | AndroidKeystore | Generation-counter HMAC key, brute-force-lockout key | | `com.squareup.okhttp3` + `com.google.code.gson` + `io.gsonfire` + `io.swagger:swagger-annotations` | Read-only scan-API client (no signing primitives in Java) | | `androidx.camera:camera-*` + `com.google.mlkit:barcode-scanning` | Camera-based QR scanning | @@ -900,7 +900,7 @@ the one shipped by the iOS wallet at | `androidx.lifecycle:lifecycle-viewmodel` | Per-screen ViewModels | | `androidx.localbroadcastmanager` | Process-local network-change pub/sub (no cross-app signal) | | `androidx.documentfile` | Storage-Access-Framework backup folder enumeration | -| `com.jakewharton.timber` | Logger backend (wrapped behind the in-house [`Logger`](app/src/main/java/com/quantumcoinwallet/app/Logger.java) facade) | +| `com.jakewharton.timber` | Logger backend (wrapped behind the in-house [`Logger`](app/src/main/java/com/quantumcoin/app/Logger.java) facade) | ### Build tooling @@ -972,7 +972,7 @@ the one shipped by the iOS wallet at The strict layering is enforced by the storage / crypto / bridge separation in code review and by invariant tests in -[`app/src/test/java/com/quantumcoinwallet/app/strongbox/StrongboxPaddingTest.java`](app/src/test/java/com/quantumcoinwallet/app/strongbox/StrongboxPaddingTest.java) +[`app/src/test/java/com/quantumcoin/app/strongbox/StrongboxPaddingTest.java`](app/src/test/java/com/quantumcoin/app/strongbox/StrongboxPaddingTest.java) and the broader test suite. The only structurally-permitted writers of wallet-meaningful state are the `SecureStorage` accessor and the `UnlockCoordinator` re-encrypt @@ -1017,7 +1017,7 @@ contract documented in │ │ ├── values/, values-night/ Themes, colors, strings, dark mode │ │ └── xml/ backup_rules, data_extraction_rules, │ │ network_security_config - │ └── java/com/quantumcoinwallet/app/ + │ └── java/com/quantumcoin/app/ │ ├── App.java Application boot + tamper gate plant │ ├── Logger.java Logger facade (release-safe) │ ├── RedactingDebugTree.java Timber tree with redaction regex set @@ -1048,7 +1048,7 @@ contract documented in │ │ ├── fragment/ 13 top-level Fragments │ │ └── widget/ Custom views │ └── viewmodel/ Per-screen ViewModels - └── test/java/com/quantumcoinwallet/app/ 29 test classes, 183 tests + └── test/java/com/quantumcoin/app/ 29 test classes, 183 tests ``` Counts (at the time of writing): 113 Java source files in @@ -1098,7 +1098,7 @@ cd quantum-coin-wallet-android The first build runs the `embedBundleHash` Gradle task, which writes -[`app/src/main/java/com/quantumcoinwallet/app/security/generated/GeneratedBundleHash.java`](app/src/main/java/com/quantumcoinwallet/app/security/generated/GeneratedBundleHash.java) +[`app/src/main/java/com/quantumcoin/app/security/generated/GeneratedBundleHash.java`](app/src/main/java/com/quantumcoin/app/security/generated/GeneratedBundleHash.java) so the SHA-256 of `quantumcoin-bundle.js` is embedded in `classes.dex`. **The generated file IS committed** so the constant can be diffed alongside the bundle bytes in the same PR; the build @@ -1162,7 +1162,7 @@ to confirm cross-platform bundle parity in the same commit. ``` The test target lives in -[`app/src/test/java/com/quantumcoinwallet/app/`](app/src/test/java/com/quantumcoinwallet/app). +[`app/src/test/java/com/quantumcoin/app/`](app/src/test/java/com/quantumcoin/app). It contains 29 test classes and 183 unit tests: | Suite | Coverage | @@ -1248,7 +1248,7 @@ configuration stays resolvable in IDE syncs). + strict default hostname verification still apply on RPC traffic (so a downgrade-to-TLS-1.2 attacker is rejected even on user-chosen RPC endpoints). See - [`security/TlsPinning.java`](app/src/main/java/com/quantumcoinwallet/app/security/TlsPinning.java) + [`security/TlsPinning.java`](app/src/main/java/com/quantumcoin/app/security/TlsPinning.java) for the full coverage map. - **Defending an unlocked, rooted, attacker-owned device with a Frida-class hook injected before the wallet process loads.** @@ -1265,7 +1265,7 @@ configuration stays resolvable in IDE syncs). shipping list to a classical signature scheme would contradict the project's cryptographic posture; see the Javadoc on - [`tokens/RecognizedTokens.java`](app/src/main/java/com/quantumcoinwallet/app/tokens/RecognizedTokens.java) + [`tokens/RecognizedTokens.java`](app/src/main/java/com/quantumcoin/app/tokens/RecognizedTokens.java) for the rationale. - **Investment, custody, or financial advice of any kind.** diff --git a/app/build.gradle b/app/build.gradle index ad0968a..6b53e38 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,11 +3,11 @@ plugins { } android { - namespace 'com.quantumcoinwallet.app' + namespace 'com.quantumcoin.app' compileSdk 35 defaultConfig { - applicationId "com.quantumcoinwallet.app" + applicationId "com.quantumcoin.app" // Strict TLS 1.3 enforcement: minSdk is 29 (Android 10) so the // platform's `SSLEngine` ships with native TLS 1.3 support. // The TlsPinning layer installs an explicit TLS-1.3-only @@ -122,7 +122,7 @@ android { // --------------------------------------------------------------- task embedBundleHash { def bundleFile = file("$projectDir/src/main/assets/quantumcoin-bundle.js") - def outputDir = file("$projectDir/src/main/java/com/quantumcoinwallet/app/security/generated") + def outputDir = file("$projectDir/src/main/java/com/quantumcoin/app/security/generated") def outputFile = file("$outputDir/GeneratedBundleHash.java") inputs.file bundleFile @@ -157,7 +157,7 @@ task embedBundleHash { def bytesBlock = bytesLines.join('\n') outputFile.text = """\ -package com.quantumcoinwallet.app.security.generated; +package com.quantumcoin.app.security.generated; // AUTO-GENERATED at build time by the embedBundleHash Gradle task in // app/build.gradle. DO NOT EDIT. Any local changes will be overwritten diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 0f7ca96..559c43b 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -16,7 +16,7 @@ -keepclassmembers class * { @android.webkit.JavascriptInterface ; } --keep class com.quantumcoinwallet.app.bridge.** { *; } +-keep class com.quantumcoin.app.bridge.** { *; } # ----------------------------------------------------------- # Gson model classes (reflection-based (de)serialization) @@ -28,14 +28,14 @@ -keep class sun.misc.Unsafe { *; } # Preserve all model classes used with Gson (serialized/deserialized via reflection). --keep class com.quantumcoinwallet.app.model.** { *; } --keepclassmembers class com.quantumcoinwallet.app.model.** { ; (...); } +-keep class com.quantumcoin.app.model.** { *; } +-keepclassmembers class com.quantumcoin.app.model.** { ; (...); } --keep class com.quantumcoinwallet.app.api.read.model.** { *; } --keepclassmembers class com.quantumcoinwallet.app.api.read.model.** { ; (...); } +-keep class com.quantumcoin.app.api.read.model.** { *; } +-keepclassmembers class com.quantumcoin.app.api.read.model.** { ; (...); } --keep class com.quantumcoinwallet.app.entity.** { *; } --keepclassmembers class com.quantumcoinwallet.app.entity.** { ; (...); } +-keep class com.quantumcoin.app.entity.** { *; } +-keepclassmembers class com.quantumcoin.app.entity.** { ; (...); } # Fields annotated with @SerializedName must survive obfuscation. -keepclassmembers class * { @@ -59,7 +59,7 @@ -dontwarn org.openjsse.** # Swagger/OpenAPI generated client uses reflection for auth/JSON adapters. --keep class com.quantumcoinwallet.app.api.read.** { *; } +-keep class com.quantumcoin.app.api.read.** { *; } -keep class io.swagger.annotations.** { *; } -dontwarn io.swagger.** @@ -81,19 +81,19 @@ -keep class androidx.camera.** { *; } # ViewBinding: generated binding classes. --keep class com.quantumcoinwallet.app.databinding.** { *; } +-keep class com.quantumcoin.app.databinding.** { *; } # ----------------------------------------------------------- # Reflection-loaded Application class # ----------------------------------------------------------- --keep public class com.quantumcoinwallet.app.App +-keep public class com.quantumcoin.app.App # ----------------------------------------------------------- # BackupAgent (declared in manifest via android:backupAgent). # Manifest-declared components must survive R8. # ----------------------------------------------------------- --keep public class com.quantumcoinwallet.app.backup.WalletBackupAgent --keepclassmembers class com.quantumcoinwallet.app.backup.WalletBackupAgent { (...); } +-keep public class com.quantumcoin.app.backup.WalletBackupAgent +-keepclassmembers class com.quantumcoin.app.backup.WalletBackupAgent { (...); } # ----------------------------------------------------------- # Parcelables + Serializables (Android standard keep rules). diff --git a/app/src/main/java/com/quantumcoinwallet/app/App.java b/app/src/main/java/com/quantumcoin/app/App.java similarity index 90% rename from app/src/main/java/com/quantumcoinwallet/app/App.java rename to app/src/main/java/com/quantumcoin/app/App.java index a233a76..2041712 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/App.java +++ b/app/src/main/java/com/quantumcoin/app/App.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app; +package com.quantumcoin.app; import android.app.Application; import android.util.Log; @@ -30,8 +30,8 @@ public void onCreate() { // sensitive surfaces (seed / address strip) react to a live // recording or cast session. try { - com.quantumcoinwallet.app.ux.SnapshotRedactor.install(this); - com.quantumcoinwallet.app.security.ScreenCaptureGuard.install(getApplicationContext()); + com.quantumcoin.app.ux.SnapshotRedactor.install(this); + com.quantumcoin.app.security.ScreenCaptureGuard.install(getApplicationContext()); } catch (Throwable t) { Timber.tag("App").w(t, "snapshot/capture install"); } @@ -46,7 +46,7 @@ public void onCreate() { new Thread(new Runnable() { @Override public void run() { try { - com.quantumcoinwallet.app.backup.CloudBackupManager + com.quantumcoin.app.backup.CloudBackupManager .cleanupStaleStagedExports(getApplicationContext()); } catch (Throwable t) { Timber.tag("App").w(t, "stale-tmp sweep"); diff --git a/app/src/main/java/com/quantumcoinwallet/app/Logger.java b/app/src/main/java/com/quantumcoin/app/Logger.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/Logger.java rename to app/src/main/java/com/quantumcoin/app/Logger.java index bd5b0b5..ea69afa 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/Logger.java +++ b/app/src/main/java/com/quantumcoin/app/Logger.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app; +package com.quantumcoin.app; import android.util.Log; diff --git a/app/src/main/java/com/quantumcoinwallet/app/RedactingDebugTree.java b/app/src/main/java/com/quantumcoin/app/RedactingDebugTree.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/RedactingDebugTree.java rename to app/src/main/java/com/quantumcoin/app/RedactingDebugTree.java index 4f1e4bc..ceaed0c 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/RedactingDebugTree.java +++ b/app/src/main/java/com/quantumcoin/app/RedactingDebugTree.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app; +package com.quantumcoin.app; import java.util.regex.Pattern; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/ApiCallback.java b/app/src/main/java/com/quantumcoin/app/api/read/ApiCallback.java similarity index 97% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/ApiCallback.java rename to app/src/main/java/com/quantumcoin/app/api/read/ApiCallback.java index 3ddc845..7d038fb 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/ApiCallback.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/ApiCallback.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read; +package com.quantumcoin.app.api.read; import java.util.Map; import java.util.List; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/ApiClient.java b/app/src/main/java/com/quantumcoin/app/api/read/ApiClient.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/ApiClient.java rename to app/src/main/java/com/quantumcoin/app/api/read/ApiClient.java index 98a2920..8456e09 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/ApiClient.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/ApiClient.java @@ -8,7 +8,7 @@ */ -package com.quantumcoinwallet.app.api.read; +package com.quantumcoin.app.api.read; import okhttp3.*; import okhttp3.internal.http.HttpMethod; @@ -41,10 +41,10 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import com.quantumcoinwallet.app.api.read.auth.Authentication; -import com.quantumcoinwallet.app.api.read.auth.HttpBasicAuth; -import com.quantumcoinwallet.app.api.read.auth.ApiKeyAuth; -import com.quantumcoinwallet.app.utils.GlobalMethods; +import com.quantumcoin.app.api.read.auth.Authentication; +import com.quantumcoin.app.api.read.auth.HttpBasicAuth; +import com.quantumcoin.app.api.read.auth.ApiKeyAuth; +import com.quantumcoin.app.utils.GlobalMethods; public class ApiClient { @@ -103,7 +103,7 @@ private void init() { // user-defined custom networks (those still get baseline // CA-validated TLS via the system trust store). See // TlsPinning's file header for the full coverage rationale. - httpClient = com.quantumcoinwallet.app.security.TlsPinning + httpClient = com.quantumcoin.app.security.TlsPinning .applyTo(new OkHttpClient.Builder()) .build(); @@ -365,7 +365,7 @@ public boolean isDebugging() { * @return ApiClient */ public ApiClient setDebugging(boolean debugging) { - if (!com.quantumcoinwallet.app.BuildConfig.DEBUG) { + if (!com.quantumcoin.app.BuildConfig.DEBUG) { this.debugging = false; return this; } diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/ApiException.java b/app/src/main/java/com/quantumcoin/app/api/read/ApiException.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/ApiException.java rename to app/src/main/java/com/quantumcoin/app/api/read/ApiException.java index 5020ebd..fcb166c 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/ApiException.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/ApiException.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read; +package com.quantumcoin.app.api.read; import java.util.Map; import java.util.List; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/ApiResponse.java b/app/src/main/java/com/quantumcoin/app/api/read/ApiResponse.java similarity index 97% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/ApiResponse.java rename to app/src/main/java/com/quantumcoin/app/api/read/ApiResponse.java index 5702e93..415dbc3 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/ApiResponse.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/ApiResponse.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read; +package com.quantumcoin.app.api.read; import java.util.List; import java.util.Map; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/Configuration.java b/app/src/main/java/com/quantumcoin/app/api/read/Configuration.java similarity index 96% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/Configuration.java rename to app/src/main/java/com/quantumcoin/app/api/read/Configuration.java index 4cb2e44..09b891b 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/Configuration.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/Configuration.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read; +package com.quantumcoin.app.api.read; @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2023-04-28T20:27:13.465275500-07:00[America/Los_Angeles]") public class Configuration { diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/GzipRequestInterceptor.java b/app/src/main/java/com/quantumcoin/app/api/read/GzipRequestInterceptor.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/GzipRequestInterceptor.java rename to app/src/main/java/com/quantumcoin/app/api/read/GzipRequestInterceptor.java index 8797136..1a4783e 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/GzipRequestInterceptor.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/GzipRequestInterceptor.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read; +package com.quantumcoin.app.api.read; import okhttp3.*; import okio.Buffer; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/JSON.java b/app/src/main/java/com/quantumcoin/app/api/read/JSON.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/JSON.java rename to app/src/main/java/com/quantumcoin/app/api/read/JSON.java index 2c022da..65d0a5b 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/JSON.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/JSON.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read; +package com.quantumcoin.app.api.read; import com.google.gson.Gson; import com.google.gson.GsonBuilder; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/Pair.java b/app/src/main/java/com/quantumcoin/app/api/read/Pair.java similarity index 96% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/Pair.java rename to app/src/main/java/com/quantumcoin/app/api/read/Pair.java index d3f85f4..d9f5705 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/Pair.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/Pair.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read; +package com.quantumcoin.app.api.read; @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2023-04-28T20:27:13.465275500-07:00[America/Los_Angeles]") public class Pair { diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/ProgressRequestBody.java b/app/src/main/java/com/quantumcoin/app/api/read/ProgressRequestBody.java similarity index 97% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/ProgressRequestBody.java rename to app/src/main/java/com/quantumcoin/app/api/read/ProgressRequestBody.java index cebab9a..e27b28f 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/ProgressRequestBody.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/ProgressRequestBody.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read; +package com.quantumcoin.app.api.read; import okhttp3.MediaType; import okhttp3.RequestBody; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/ProgressResponseBody.java b/app/src/main/java/com/quantumcoin/app/api/read/ProgressResponseBody.java similarity index 97% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/ProgressResponseBody.java rename to app/src/main/java/com/quantumcoin/app/api/read/ProgressResponseBody.java index 3b0bc64..81d655f 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/ProgressResponseBody.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/ProgressResponseBody.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read; +package com.quantumcoin.app.api.read; import okhttp3.MediaType; import okhttp3.ResponseBody; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/StringUtil.java b/app/src/main/java/com/quantumcoin/app/api/read/StringUtil.java similarity index 97% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/StringUtil.java rename to app/src/main/java/com/quantumcoin/app/api/read/StringUtil.java index 6de84dd..a5dd17f 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/StringUtil.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/StringUtil.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read; +package com.quantumcoin.app.api.read; @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2023-04-28T20:27:13.465275500-07:00[America/Los_Angeles]") public class StringUtil { diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/api/AccountsApi.java b/app/src/main/java/com/quantumcoin/app/api/read/api/AccountsApi.java similarity index 96% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/api/AccountsApi.java rename to app/src/main/java/com/quantumcoin/app/api/read/api/AccountsApi.java index c9ce254..dcfbf5c 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/api/AccountsApi.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/api/AccountsApi.java @@ -11,26 +11,26 @@ */ -package com.quantumcoinwallet.app.api.read.api; +package com.quantumcoin.app.api.read.api; -import com.quantumcoinwallet.app.api.read.ApiCallback; -import com.quantumcoinwallet.app.api.read.ApiClient; -import com.quantumcoinwallet.app.api.read.ApiException; -import com.quantumcoinwallet.app.api.read.ApiResponse; -import com.quantumcoinwallet.app.api.read.Configuration; -import com.quantumcoinwallet.app.api.read.Pair; -import com.quantumcoinwallet.app.api.read.ProgressRequestBody; -import com.quantumcoinwallet.app.api.read.ProgressResponseBody; +import com.quantumcoin.app.api.read.ApiCallback; +import com.quantumcoin.app.api.read.ApiClient; +import com.quantumcoin.app.api.read.ApiException; +import com.quantumcoin.app.api.read.ApiResponse; +import com.quantumcoin.app.api.read.Configuration; +import com.quantumcoin.app.api.read.Pair; +import com.quantumcoin.app.api.read.ProgressRequestBody; +import com.quantumcoin.app.api.read.ProgressResponseBody; import com.google.gson.reflect.TypeToken; import java.io.IOException; -import com.quantumcoinwallet.app.api.read.model.AccountPendingTransactionSummaryResponse; -import com.quantumcoinwallet.app.api.read.model.AccountTokenListResponse; -import com.quantumcoinwallet.app.api.read.model.AccountTransactionSummaryResponse; -import com.quantumcoinwallet.app.api.read.model.BalanceResponse; +import com.quantumcoin.app.api.read.model.AccountPendingTransactionSummaryResponse; +import com.quantumcoin.app.api.read.model.AccountTokenListResponse; +import com.quantumcoin.app.api.read.model.AccountTransactionSummaryResponse; +import com.quantumcoin.app.api.read.model.BalanceResponse; import java.lang.reflect.Type; import java.util.ArrayList; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/auth/ApiKeyAuth.java b/app/src/main/java/com/quantumcoin/app/api/read/auth/ApiKeyAuth.java similarity index 94% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/auth/ApiKeyAuth.java rename to app/src/main/java/com/quantumcoin/app/api/read/auth/ApiKeyAuth.java index af7e483..591ba68 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/auth/ApiKeyAuth.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/auth/ApiKeyAuth.java @@ -11,9 +11,9 @@ */ -package com.quantumcoinwallet.app.api.read.auth; +package com.quantumcoin.app.api.read.auth; -import com.quantumcoinwallet.app.api.read.Pair; +import com.quantumcoin.app.api.read.Pair; import java.util.Map; import java.util.List; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/auth/Authentication.java b/app/src/main/java/com/quantumcoin/app/api/read/auth/Authentication.java similarity index 87% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/auth/Authentication.java rename to app/src/main/java/com/quantumcoin/app/api/read/auth/Authentication.java index 6d73b7a..4c26183 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/auth/Authentication.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/auth/Authentication.java @@ -11,9 +11,9 @@ */ -package com.quantumcoinwallet.app.api.read.auth; +package com.quantumcoin.app.api.read.auth; -import com.quantumcoinwallet.app.api.read.Pair; +import com.quantumcoin.app.api.read.Pair; import java.util.Map; import java.util.List; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/auth/HttpBasicAuth.java b/app/src/main/java/com/quantumcoin/app/api/read/auth/HttpBasicAuth.java similarity index 92% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/auth/HttpBasicAuth.java rename to app/src/main/java/com/quantumcoin/app/api/read/auth/HttpBasicAuth.java index 4122e10..1b55f62 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/auth/HttpBasicAuth.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/auth/HttpBasicAuth.java @@ -11,9 +11,9 @@ */ -package com.quantumcoinwallet.app.api.read.auth; +package com.quantumcoin.app.api.read.auth; -import com.quantumcoinwallet.app.api.read.Pair; +import com.quantumcoin.app.api.read.Pair; import okhttp3.Credentials; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/AccountPendingTransactionSummary.java b/app/src/main/java/com/quantumcoin/app/api/read/model/AccountPendingTransactionSummary.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/model/AccountPendingTransactionSummary.java rename to app/src/main/java/com/quantumcoin/app/api/read/model/AccountPendingTransactionSummary.java index 230e2c1..c96aa6e 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/AccountPendingTransactionSummary.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/model/AccountPendingTransactionSummary.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read.model; +package com.quantumcoin.app.api.read.model; import java.util.Objects; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/AccountPendingTransactionSummaryResponse.java b/app/src/main/java/com/quantumcoin/app/api/read/model/AccountPendingTransactionSummaryResponse.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/model/AccountPendingTransactionSummaryResponse.java rename to app/src/main/java/com/quantumcoin/app/api/read/model/AccountPendingTransactionSummaryResponse.java index e3aac01..a987fbc 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/AccountPendingTransactionSummaryResponse.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/model/AccountPendingTransactionSummaryResponse.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read.model; +package com.quantumcoin.app.api.read.model; import java.util.Objects; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/AccountTokenListResponse.java b/app/src/main/java/com/quantumcoin/app/api/read/model/AccountTokenListResponse.java similarity index 97% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/model/AccountTokenListResponse.java rename to app/src/main/java/com/quantumcoin/app/api/read/model/AccountTokenListResponse.java index bbc675f..061b912 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/AccountTokenListResponse.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/model/AccountTokenListResponse.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.api.read.model; +package com.quantumcoin.app.api.read.model; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/AccountTokenSummary.java b/app/src/main/java/com/quantumcoin/app/api/read/model/AccountTokenSummary.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/model/AccountTokenSummary.java rename to app/src/main/java/com/quantumcoin/app/api/read/model/AccountTokenSummary.java index c362bd4..4143d3d 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/AccountTokenSummary.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/model/AccountTokenSummary.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.api.read.model; +package com.quantumcoin.app.api.read.model; import java.util.Objects; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/AccountTransactionSummary.java b/app/src/main/java/com/quantumcoin/app/api/read/model/AccountTransactionSummary.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/model/AccountTransactionSummary.java rename to app/src/main/java/com/quantumcoin/app/api/read/model/AccountTransactionSummary.java index d1618f2..8a4755d 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/AccountTransactionSummary.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/model/AccountTransactionSummary.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read.model; +package com.quantumcoin.app.api.read.model; import java.util.Objects; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/AccountTransactionSummaryResponse.java b/app/src/main/java/com/quantumcoin/app/api/read/model/AccountTransactionSummaryResponse.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/model/AccountTransactionSummaryResponse.java rename to app/src/main/java/com/quantumcoin/app/api/read/model/AccountTransactionSummaryResponse.java index 91a3366..e046ac4 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/AccountTransactionSummaryResponse.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/model/AccountTransactionSummaryResponse.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read.model; +package com.quantumcoin.app.api.read.model; import java.util.Objects; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/Balance.java b/app/src/main/java/com/quantumcoin/app/api/read/model/Balance.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/model/Balance.java rename to app/src/main/java/com/quantumcoin/app/api/read/model/Balance.java index 84edf32..3f2d684 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/Balance.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/model/Balance.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read.model; +package com.quantumcoin.app.api.read.model; import java.util.Objects; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/BalanceResponse.java b/app/src/main/java/com/quantumcoin/app/api/read/model/BalanceResponse.java similarity index 97% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/model/BalanceResponse.java rename to app/src/main/java/com/quantumcoin/app/api/read/model/BalanceResponse.java index 8520af9..8cb1054 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/BalanceResponse.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/model/BalanceResponse.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read.model; +package com.quantumcoin.app.api.read.model; import java.util.Objects; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/ErrorResponseModel.java b/app/src/main/java/com/quantumcoin/app/api/read/model/ErrorResponseModel.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/model/ErrorResponseModel.java rename to app/src/main/java/com/quantumcoin/app/api/read/model/ErrorResponseModel.java index 9c5de98..0cb6750 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/ErrorResponseModel.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/model/ErrorResponseModel.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read.model; +package com.quantumcoin.app.api.read.model; import java.util.Objects; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/Receipt.java b/app/src/main/java/com/quantumcoin/app/api/read/model/Receipt.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/model/Receipt.java rename to app/src/main/java/com/quantumcoin/app/api/read/model/Receipt.java index 3976b07..bf847d1 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/Receipt.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/model/Receipt.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read.model; +package com.quantumcoin.app.api.read.model; import java.util.Objects; diff --git a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/TransactionType.java b/app/src/main/java/com/quantumcoin/app/api/read/model/TransactionType.java similarity index 97% rename from app/src/main/java/com/quantumcoinwallet/app/api/read/model/TransactionType.java rename to app/src/main/java/com/quantumcoin/app/api/read/model/TransactionType.java index 4c7c16c..8c3a8b9 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/api/read/model/TransactionType.java +++ b/app/src/main/java/com/quantumcoin/app/api/read/model/TransactionType.java @@ -11,7 +11,7 @@ */ -package com.quantumcoinwallet.app.api.read.model; +package com.quantumcoin.app.api.read.model; import java.io.IOException; import com.google.gson.TypeAdapter; diff --git a/app/src/main/java/com/quantumcoinwallet/app/asynctask/read/AccountBalanceRestTask.java b/app/src/main/java/com/quantumcoin/app/asynctask/read/AccountBalanceRestTask.java similarity index 94% rename from app/src/main/java/com/quantumcoinwallet/app/asynctask/read/AccountBalanceRestTask.java rename to app/src/main/java/com/quantumcoin/app/asynctask/read/AccountBalanceRestTask.java index 973aa99..f39c495 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/asynctask/read/AccountBalanceRestTask.java +++ b/app/src/main/java/com/quantumcoin/app/asynctask/read/AccountBalanceRestTask.java @@ -1,16 +1,16 @@ -package com.quantumcoinwallet.app.asynctask.read; +package com.quantumcoin.app.asynctask.read; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.text.TextUtils; -import com.quantumcoinwallet.app.api.read.ApiClient; -import com.quantumcoinwallet.app.api.read.ApiException; -import com.quantumcoinwallet.app.api.read.api.AccountsApi; -import com.quantumcoinwallet.app.api.read.model.BalanceResponse; -import com.quantumcoinwallet.app.entity.ServiceException; -import com.quantumcoinwallet.app.utils.GlobalMethods; +import com.quantumcoin.app.api.read.ApiClient; +import com.quantumcoin.app.api.read.ApiException; +import com.quantumcoin.app.api.read.api.AccountsApi; +import com.quantumcoin.app.api.read.model.BalanceResponse; +import com.quantumcoin.app.entity.ServiceException; +import com.quantumcoin.app.utils.GlobalMethods; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; diff --git a/app/src/main/java/com/quantumcoinwallet/app/asynctask/read/AccountPendingTxnRestTask.java b/app/src/main/java/com/quantumcoin/app/asynctask/read/AccountPendingTxnRestTask.java similarity index 91% rename from app/src/main/java/com/quantumcoinwallet/app/asynctask/read/AccountPendingTxnRestTask.java rename to app/src/main/java/com/quantumcoin/app/asynctask/read/AccountPendingTxnRestTask.java index d617621..8b2ab5f 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/asynctask/read/AccountPendingTxnRestTask.java +++ b/app/src/main/java/com/quantumcoin/app/asynctask/read/AccountPendingTxnRestTask.java @@ -1,15 +1,15 @@ -package com.quantumcoinwallet.app.asynctask.read; +package com.quantumcoin.app.asynctask.read; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.text.TextUtils; -import com.quantumcoinwallet.app.api.read.ApiClient; -import com.quantumcoinwallet.app.api.read.ApiException; -import com.quantumcoinwallet.app.api.read.api.AccountsApi; -import com.quantumcoinwallet.app.api.read.model.AccountPendingTransactionSummaryResponse; -import com.quantumcoinwallet.app.utils.GlobalMethods; +import com.quantumcoin.app.api.read.ApiClient; +import com.quantumcoin.app.api.read.ApiException; +import com.quantumcoin.app.api.read.api.AccountsApi; +import com.quantumcoin.app.api.read.model.AccountPendingTransactionSummaryResponse; +import com.quantumcoin.app.utils.GlobalMethods; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; diff --git a/app/src/main/java/com/quantumcoinwallet/app/asynctask/read/AccountTxnRestTask.java b/app/src/main/java/com/quantumcoin/app/asynctask/read/AccountTxnRestTask.java similarity index 91% rename from app/src/main/java/com/quantumcoinwallet/app/asynctask/read/AccountTxnRestTask.java rename to app/src/main/java/com/quantumcoin/app/asynctask/read/AccountTxnRestTask.java index a9de95c..c1f8135 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/asynctask/read/AccountTxnRestTask.java +++ b/app/src/main/java/com/quantumcoin/app/asynctask/read/AccountTxnRestTask.java @@ -1,15 +1,15 @@ -package com.quantumcoinwallet.app.asynctask.read; +package com.quantumcoin.app.asynctask.read; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.text.TextUtils; -import com.quantumcoinwallet.app.api.read.ApiClient; -import com.quantumcoinwallet.app.api.read.ApiException; -import com.quantumcoinwallet.app.api.read.api.AccountsApi; -import com.quantumcoinwallet.app.api.read.model.AccountTransactionSummaryResponse; -import com.quantumcoinwallet.app.utils.GlobalMethods; +import com.quantumcoin.app.api.read.ApiClient; +import com.quantumcoin.app.api.read.ApiException; +import com.quantumcoin.app.api.read.api.AccountsApi; +import com.quantumcoin.app.api.read.model.AccountTransactionSummaryResponse; +import com.quantumcoin.app.utils.GlobalMethods; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; diff --git a/app/src/main/java/com/quantumcoinwallet/app/asynctask/read/ListAccountTokensRestTask.java b/app/src/main/java/com/quantumcoin/app/asynctask/read/ListAccountTokensRestTask.java similarity index 90% rename from app/src/main/java/com/quantumcoinwallet/app/asynctask/read/ListAccountTokensRestTask.java rename to app/src/main/java/com/quantumcoin/app/asynctask/read/ListAccountTokensRestTask.java index 1da2dc3..af12d3e 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/asynctask/read/ListAccountTokensRestTask.java +++ b/app/src/main/java/com/quantumcoin/app/asynctask/read/ListAccountTokensRestTask.java @@ -1,15 +1,15 @@ -package com.quantumcoinwallet.app.asynctask.read; +package com.quantumcoin.app.asynctask.read; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.text.TextUtils; -import com.quantumcoinwallet.app.api.read.ApiClient; -import com.quantumcoinwallet.app.api.read.ApiException; -import com.quantumcoinwallet.app.api.read.api.AccountsApi; -import com.quantumcoinwallet.app.api.read.model.AccountTokenListResponse; -import com.quantumcoinwallet.app.utils.GlobalMethods; +import com.quantumcoin.app.api.read.ApiClient; +import com.quantumcoin.app.api.read.ApiException; +import com.quantumcoin.app.api.read.api.AccountsApi; +import com.quantumcoin.app.api.read.model.AccountTokenListResponse; +import com.quantumcoin.app.utils.GlobalMethods; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; diff --git a/app/src/main/java/com/quantumcoinwallet/app/backup/BackupExecutor.java b/app/src/main/java/com/quantumcoin/app/backup/BackupExecutor.java similarity index 95% rename from app/src/main/java/com/quantumcoinwallet/app/backup/BackupExecutor.java rename to app/src/main/java/com/quantumcoin/app/backup/BackupExecutor.java index c6bf560..63cfa76 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/backup/BackupExecutor.java +++ b/app/src/main/java/com/quantumcoin/app/backup/BackupExecutor.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.backup; +package com.quantumcoin.app.backup; import android.app.Activity; import android.content.DialogInterface; @@ -12,12 +12,12 @@ import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; -import com.quantumcoinwallet.app.Logger; -import com.quantumcoinwallet.app.keystorage.SecureStorage; -import com.quantumcoinwallet.app.utils.GlobalMethods; -import com.quantumcoinwallet.app.utils.PrefConnect; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; -import com.quantumcoinwallet.app.viewmodel.KeyViewModel; +import com.quantumcoin.app.Logger; +import com.quantumcoin.app.keystorage.SecureStorage; +import com.quantumcoin.app.utils.GlobalMethods; +import com.quantumcoin.app.utils.PrefConnect; +import com.quantumcoin.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.viewmodel.KeyViewModel; import org.json.JSONObject; @@ -160,9 +160,9 @@ public void onClick(DialogInterface dialog, int which) { * cloud folder or launches the document-tree picker. */ public void startCloudBackup(final String walletAddress, final String walletPassword) { - com.quantumcoinwallet.app.view.dialog.BackupPasswordDialog.show( + com.quantumcoin.app.view.dialog.BackupPasswordDialog.show( host.requireContext(), vm, walletAddress, - new com.quantumcoinwallet.app.view.dialog.BackupPasswordDialog + new com.quantumcoin.app.view.dialog.BackupPasswordDialog .OnBackupPasswordListener() { @Override public void onPasswordSelected(final String backupPassword) { @@ -178,9 +178,9 @@ public void onCanceled() { } * flow except the SAF launcher is the create-document picker. */ public void startFileExport(final String walletAddress, final String walletPassword) { - com.quantumcoinwallet.app.view.dialog.BackupPasswordDialog.show( + com.quantumcoin.app.view.dialog.BackupPasswordDialog.show( host.requireContext(), vm, walletAddress, - new com.quantumcoinwallet.app.view.dialog.BackupPasswordDialog + new com.quantumcoin.app.view.dialog.BackupPasswordDialog .OnBackupPasswordListener() { @Override public void onPasswordSelected(final String backupPassword) { @@ -199,7 +199,7 @@ public void onCanceled() { } private void encryptAndStartCloudBackup(final String walletAddress, final String unlockPassword, final String backupPassword) { - final AlertDialog waitDlg = com.quantumcoinwallet.app.view.dialog.WaitDialog + final AlertDialog waitDlg = com.quantumcoin.app.view.dialog.WaitDialog .show(host.requireContext(), vm.getWaitWalletSaveByLangValues()); new Thread(new Runnable() { @Override @@ -335,7 +335,7 @@ public void run() { private void encryptAndPickExportLocation(final String walletAddress, final String unlockPassword, final String backupPassword) { - final AlertDialog waitDlg = com.quantumcoinwallet.app.view.dialog.WaitDialog + final AlertDialog waitDlg = com.quantumcoin.app.view.dialog.WaitDialog .show(host.requireContext(), vm.getWaitWalletSaveByLangValues()); new Thread(new Runnable() { @Override @@ -565,8 +565,8 @@ public void onClick(DialogInterface d, int w) { private void markActivityUnlocked() { try { Activity act = host.getActivity(); - if (act instanceof com.quantumcoinwallet.app.view.activities.HomeActivity) { - ((com.quantumcoinwallet.app.view.activities.HomeActivity) act).markUnlockedNow(); + if (act instanceof com.quantumcoin.app.view.activities.HomeActivity) { + ((com.quantumcoin.app.view.activities.HomeActivity) act).markUnlockedNow(); } } catch (Exception ignore) { } } @@ -574,8 +574,8 @@ private void markActivityUnlocked() { private void setSuppressNextResumeLock(boolean suppress) { try { Activity act = host.getActivity(); - if (act instanceof com.quantumcoinwallet.app.view.activities.HomeActivity) { - ((com.quantumcoinwallet.app.view.activities.HomeActivity) act) + if (act instanceof com.quantumcoin.app.view.activities.HomeActivity) { + ((com.quantumcoin.app.view.activities.HomeActivity) act) .setSuppressNextResumeLock(suppress); } } catch (Exception ignore) { } diff --git a/app/src/main/java/com/quantumcoinwallet/app/backup/CloudBackupManager.java b/app/src/main/java/com/quantumcoin/app/backup/CloudBackupManager.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/backup/CloudBackupManager.java rename to app/src/main/java/com/quantumcoin/app/backup/CloudBackupManager.java index 56c08c6..39acddc 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/backup/CloudBackupManager.java +++ b/app/src/main/java/com/quantumcoin/app/backup/CloudBackupManager.java @@ -1,15 +1,15 @@ -package com.quantumcoinwallet.app.backup; +package com.quantumcoin.app.backup; import android.content.ContentResolver; import android.content.Context; import android.net.Uri; -import com.quantumcoinwallet.app.Logger; +import com.quantumcoin.app.Logger; import androidx.documentfile.provider.DocumentFile; -import com.quantumcoinwallet.app.bridge.QuantumCoinJSBridge; -import com.quantumcoinwallet.app.utils.PrefConnect; -import com.quantumcoinwallet.app.viewmodel.KeyViewModel; +import com.quantumcoin.app.bridge.QuantumCoinJSBridge; +import com.quantumcoin.app.utils.PrefConnect; +import com.quantumcoin.app.viewmodel.KeyViewModel; import org.json.JSONArray; import org.json.JSONObject; diff --git a/app/src/main/java/com/quantumcoinwallet/app/backup/WalletBackupAgent.java b/app/src/main/java/com/quantumcoin/app/backup/WalletBackupAgent.java similarity index 85% rename from app/src/main/java/com/quantumcoinwallet/app/backup/WalletBackupAgent.java rename to app/src/main/java/com/quantumcoin/app/backup/WalletBackupAgent.java index 3a3c17d..80bc350 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/backup/WalletBackupAgent.java +++ b/app/src/main/java/com/quantumcoin/app/backup/WalletBackupAgent.java @@ -1,9 +1,9 @@ -package com.quantumcoinwallet.app.backup; +package com.quantumcoin.app.backup; import android.app.backup.BackupAgentHelper; import android.app.backup.FullBackupDataOutput; -import com.quantumcoinwallet.app.utils.PrefConnect; +import com.quantumcoin.app.utils.PrefConnect; import java.io.IOException; diff --git a/app/src/main/java/com/quantumcoinwallet/app/bridge/BridgeCallback.java b/app/src/main/java/com/quantumcoin/app/bridge/BridgeCallback.java similarity index 71% rename from app/src/main/java/com/quantumcoinwallet/app/bridge/BridgeCallback.java rename to app/src/main/java/com/quantumcoin/app/bridge/BridgeCallback.java index c8e8a09..db680be 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/bridge/BridgeCallback.java +++ b/app/src/main/java/com/quantumcoin/app/bridge/BridgeCallback.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.bridge; +package com.quantumcoin.app.bridge; public interface BridgeCallback { void onResult(String jsonResult); diff --git a/app/src/main/java/com/quantumcoinwallet/app/bridge/QuantumCoinJSBridge.java b/app/src/main/java/com/quantumcoin/app/bridge/QuantumCoinJSBridge.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/bridge/QuantumCoinJSBridge.java rename to app/src/main/java/com/quantumcoin/app/bridge/QuantumCoinJSBridge.java index 293c4d7..d108fd3 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/bridge/QuantumCoinJSBridge.java +++ b/app/src/main/java/com/quantumcoin/app/bridge/QuantumCoinJSBridge.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.bridge; +package com.quantumcoin.app.bridge; import android.os.Handler; import android.os.Looper; diff --git a/app/src/main/java/com/quantumcoinwallet/app/bridge/WebViewManager.java b/app/src/main/java/com/quantumcoin/app/bridge/WebViewManager.java similarity index 94% rename from app/src/main/java/com/quantumcoinwallet/app/bridge/WebViewManager.java rename to app/src/main/java/com/quantumcoin/app/bridge/WebViewManager.java index a6aedce..7e498db 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/bridge/WebViewManager.java +++ b/app/src/main/java/com/quantumcoin/app/bridge/WebViewManager.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.bridge; +package com.quantumcoin.app.bridge; import android.annotation.SuppressLint; import android.content.Context; @@ -19,7 +19,7 @@ import androidx.annotation.Nullable; import androidx.webkit.WebViewAssetLoader; -import com.quantumcoinwallet.app.BuildConfig; +import com.quantumcoin.app.BuildConfig; import java.util.Iterator; import java.util.Map; @@ -152,7 +152,7 @@ public void onPageFinished(WebView view, String url) { ready.set(true); readyLatch.countDown(); - com.quantumcoinwallet.app.Logger.d(TAG, "Bridge WebView ready"); + com.quantumcoin.app.Logger.d(TAG, "Bridge WebView ready"); } } @@ -183,7 +183,7 @@ public void onReceivedError(WebView view, WebResourceRequest request, if (BRIDGE_URL.equals(url)) { recordLoadFailure("onReceivedError(url=" + url + " " + msg + ")"); } else if (BuildConfig.DEBUG) { - com.quantumcoinwallet.app.Logger.d(TAG, + com.quantumcoin.app.Logger.d(TAG, "WebView sub-resource failure: onReceivedError(url=" + url + " " + msg + ")"); } @@ -201,7 +201,7 @@ public void onReceivedHttpError(WebView view, WebResourceRequest request, if (BRIDGE_URL.equals(url)) { recordLoadFailure("onReceivedHttpError(url=" + url + " " + msg + ")"); } else if (BuildConfig.DEBUG) { - com.quantumcoinwallet.app.Logger.d(TAG, + com.quantumcoin.app.Logger.d(TAG, "WebView sub-resource failure: onReceivedHttpError(url=" + url + " " + msg + ")"); } @@ -230,17 +230,17 @@ public boolean onConsoleMessage(ConsoleMessage cm) switch (cm.messageLevel()) { case ERROR: - com.quantumcoinwallet.app.Logger.e(TAG, + com.quantumcoin.app.Logger.e(TAG, "JS ERROR: " + cm.message() + " [" + cm.sourceId() + ":" + cm.lineNumber() + "]"); break; case WARNING: - com.quantumcoinwallet.app.Logger.w(TAG, + com.quantumcoin.app.Logger.w(TAG, "JS WARN: " + cm.message() + " [" + cm.sourceId() + ":" + cm.lineNumber() + "]"); break; default: - com.quantumcoinwallet.app.Logger.d(TAG, + com.quantumcoin.app.Logger.d(TAG, "JS LOG: " + cm.message() + " [" + cm.sourceId() + ":" + cm.lineNumber() + "]"); break; @@ -259,9 +259,9 @@ public boolean onConsoleMessage(ConsoleMessage cm) // here closes the "swap the asset, re-sign" attack class // before the JS context ever sees the tampered bytes. try { - com.quantumcoinwallet.app.security.BundleIntegrity.verifyOrFail(appContext); - } catch (com.quantumcoinwallet.app.security.BundleIntegrity.BundleIntegrityException e) { - com.quantumcoinwallet.app.Logger.e(TAG, "Refusing to load JS bridge: " + e.getMessage()); + com.quantumcoin.app.security.BundleIntegrity.verifyOrFail(appContext); + } catch (com.quantumcoin.app.security.BundleIntegrity.BundleIntegrityException e) { + com.quantumcoin.app.Logger.e(TAG, "Refusing to load JS bridge: " + e.getMessage()); // Do not call loadUrl(); leave the bridge in the // not-ready state. Callers see isReady()==false and // surface the per-call error path. The TamperGate @@ -300,7 +300,7 @@ public boolean waitUntilReady(long timeoutSeconds) private static volatile String lastLoadFailureDescription; private void recordLoadFailure(String description) { - com.quantumcoinwallet.app.Logger.e(TAG, "WebView load failure: " + description); + com.quantumcoin.app.Logger.e(TAG, "WebView load failure: " + description); lastLoadFailureDescription = description; } @@ -447,7 +447,7 @@ private static final class PendingPayload @JavascriptInterface public void onResult(String requestId, String jsonResult) { - com.quantumcoinwallet.app.Logger.d(TAG, "onResult requestId=" + requestId); + com.quantumcoin.app.Logger.d(TAG, "onResult requestId=" + requestId); BridgeCallback callback = pendingCallbacks.remove(requestId); if (callback != null) { @@ -474,7 +474,7 @@ public void onResult(String requestId, String jsonResult) @JavascriptInterface public void onError(String requestId, String error) { - com.quantumcoinwallet.app.Logger.e(TAG, "onError requestId=" + requestId + " error=" + error); + com.quantumcoin.app.Logger.e(TAG, "onError requestId=" + requestId + " error=" + error); BridgeCallback callback = pendingCallbacks.remove(requestId); if (callback != null) { diff --git a/app/src/main/java/com/quantumcoinwallet/app/entity/ErrorEnvelope.java b/app/src/main/java/com/quantumcoin/app/entity/ErrorEnvelope.java similarity index 92% rename from app/src/main/java/com/quantumcoinwallet/app/entity/ErrorEnvelope.java rename to app/src/main/java/com/quantumcoin/app/entity/ErrorEnvelope.java index 20453f2..f423435 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/entity/ErrorEnvelope.java +++ b/app/src/main/java/com/quantumcoin/app/entity/ErrorEnvelope.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.entity; +package com.quantumcoin.app.entity; import androidx.annotation.Nullable; diff --git a/app/src/main/java/com/quantumcoinwallet/app/entity/ServiceException.java b/app/src/main/java/com/quantumcoin/app/entity/ServiceException.java similarity index 82% rename from app/src/main/java/com/quantumcoinwallet/app/entity/ServiceException.java rename to app/src/main/java/com/quantumcoin/app/entity/ServiceException.java index 3d906ec..cebfe61 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/entity/ServiceException.java +++ b/app/src/main/java/com/quantumcoin/app/entity/ServiceException.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.entity; +package com.quantumcoin.app.entity; public class ServiceException extends Exception { public final ErrorEnvelope error; diff --git a/app/src/main/java/com/quantumcoinwallet/app/events/NetworkChangeBroadcaster.java b/app/src/main/java/com/quantumcoin/app/events/NetworkChangeBroadcaster.java similarity index 96% rename from app/src/main/java/com/quantumcoinwallet/app/events/NetworkChangeBroadcaster.java rename to app/src/main/java/com/quantumcoin/app/events/NetworkChangeBroadcaster.java index 2b76eb6..48111fc 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/events/NetworkChangeBroadcaster.java +++ b/app/src/main/java/com/quantumcoin/app/events/NetworkChangeBroadcaster.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.events; +package com.quantumcoin.app.events; import android.content.BroadcastReceiver; import android.content.Context; @@ -47,7 +47,7 @@ public final class NetworkChangeBroadcaster { * mirrors the active chain identity. */ public static final String ACTION_ACTIVE_NETWORK_CHANGED = - "com.quantumcoinwallet.app.NETWORK_ACTIVE_CHANGED"; + "com.quantumcoin.app.NETWORK_ACTIVE_CHANGED"; /** * Sent when the user added, edited, or removed a network from the @@ -56,7 +56,7 @@ public final class NetworkChangeBroadcaster { * the active network's metadata changed. */ public static final String ACTION_NETWORK_LIST_CHANGED = - "com.quantumcoinwallet.app.NETWORK_LIST_CHANGED"; + "com.quantumcoin.app.NETWORK_LIST_CHANGED"; private NetworkChangeBroadcaster() { } diff --git a/app/src/main/java/com/quantumcoinwallet/app/interact/BlockchainNetworkInteract.java b/app/src/main/java/com/quantumcoin/app/interact/BlockchainNetworkInteract.java similarity index 96% rename from app/src/main/java/com/quantumcoinwallet/app/interact/BlockchainNetworkInteract.java rename to app/src/main/java/com/quantumcoin/app/interact/BlockchainNetworkInteract.java index b89aaaa..3db96f1 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/interact/BlockchainNetworkInteract.java +++ b/app/src/main/java/com/quantumcoin/app/interact/BlockchainNetworkInteract.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.interact; +package com.quantumcoin.app.interact; import org.json.JSONException; import org.json.JSONObject; diff --git a/app/src/main/java/com/quantumcoinwallet/app/interact/JsonInteract.java b/app/src/main/java/com/quantumcoin/app/interact/JsonInteract.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/interact/JsonInteract.java rename to app/src/main/java/com/quantumcoin/app/interact/JsonInteract.java index 78a1dd1..6c9ff0f 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/interact/JsonInteract.java +++ b/app/src/main/java/com/quantumcoin/app/interact/JsonInteract.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.interact; +package com.quantumcoin.app.interact; import org.json.JSONArray; import org.json.JSONException; diff --git a/app/src/main/java/com/quantumcoinwallet/app/interact/KeyInteract.java b/app/src/main/java/com/quantumcoin/app/interact/KeyInteract.java similarity index 96% rename from app/src/main/java/com/quantumcoinwallet/app/interact/KeyInteract.java rename to app/src/main/java/com/quantumcoin/app/interact/KeyInteract.java index da5f779..1d8f69d 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/interact/KeyInteract.java +++ b/app/src/main/java/com/quantumcoin/app/interact/KeyInteract.java @@ -1,7 +1,7 @@ -package com.quantumcoinwallet.app.interact; +package com.quantumcoin.app.interact; -import com.quantumcoinwallet.app.bridge.BridgeCallback; -import com.quantumcoinwallet.app.services.IKeyService; +import com.quantumcoin.app.bridge.BridgeCallback; +import com.quantumcoin.app.services.IKeyService; public class KeyInteract { private final IKeyService keyService; diff --git a/app/src/main/java/com/quantumcoinwallet/app/keystorage/Aead.java b/app/src/main/java/com/quantumcoin/app/keystorage/Aead.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/keystorage/Aead.java rename to app/src/main/java/com/quantumcoin/app/keystorage/Aead.java index 81c587b..903c8b1 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/keystorage/Aead.java +++ b/app/src/main/java/com/quantumcoin/app/keystorage/Aead.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.keystorage; +package com.quantumcoin.app.keystorage; import com.google.gson.JsonElement; import com.google.gson.JsonObject; diff --git a/app/src/main/java/com/quantumcoinwallet/app/keystorage/AndroidKeystoreGenerationCounter.java b/app/src/main/java/com/quantumcoin/app/keystorage/AndroidKeystoreGenerationCounter.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/keystorage/AndroidKeystoreGenerationCounter.java rename to app/src/main/java/com/quantumcoin/app/keystorage/AndroidKeystoreGenerationCounter.java index a55bac0..00dc12f 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/keystorage/AndroidKeystoreGenerationCounter.java +++ b/app/src/main/java/com/quantumcoin/app/keystorage/AndroidKeystoreGenerationCounter.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.keystorage; +package com.quantumcoin.app.keystorage; import android.content.Context; import android.content.SharedPreferences; diff --git a/app/src/main/java/com/quantumcoinwallet/app/keystorage/DefaultSecureRandomSource.java b/app/src/main/java/com/quantumcoin/app/keystorage/DefaultSecureRandomSource.java similarity index 95% rename from app/src/main/java/com/quantumcoinwallet/app/keystorage/DefaultSecureRandomSource.java rename to app/src/main/java/com/quantumcoin/app/keystorage/DefaultSecureRandomSource.java index 8ae46fc..fd4f9d6 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/keystorage/DefaultSecureRandomSource.java +++ b/app/src/main/java/com/quantumcoin/app/keystorage/DefaultSecureRandomSource.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.keystorage; +package com.quantumcoin.app.keystorage; import java.security.SecureRandom; diff --git a/app/src/main/java/com/quantumcoinwallet/app/keystorage/MacUtil.java b/app/src/main/java/com/quantumcoin/app/keystorage/MacUtil.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/keystorage/MacUtil.java rename to app/src/main/java/com/quantumcoin/app/keystorage/MacUtil.java index 7ec0b9a..1dbfdec 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/keystorage/MacUtil.java +++ b/app/src/main/java/com/quantumcoin/app/keystorage/MacUtil.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.keystorage; +package com.quantumcoin.app.keystorage; import org.bouncycastle.crypto.digests.SHA256Digest; import org.bouncycastle.crypto.generators.HKDFBytesGenerator; diff --git a/app/src/main/java/com/quantumcoinwallet/app/keystorage/SecureRandomSource.java b/app/src/main/java/com/quantumcoin/app/keystorage/SecureRandomSource.java similarity index 97% rename from app/src/main/java/com/quantumcoinwallet/app/keystorage/SecureRandomSource.java rename to app/src/main/java/com/quantumcoin/app/keystorage/SecureRandomSource.java index 68f2bd5..8dfe13a 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/keystorage/SecureRandomSource.java +++ b/app/src/main/java/com/quantumcoin/app/keystorage/SecureRandomSource.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.keystorage; +package com.quantumcoin.app.keystorage; import java.security.SecureRandom; diff --git a/app/src/main/java/com/quantumcoinwallet/app/keystorage/SecureStorage.java b/app/src/main/java/com/quantumcoin/app/keystorage/SecureStorage.java similarity index 92% rename from app/src/main/java/com/quantumcoinwallet/app/keystorage/SecureStorage.java rename to app/src/main/java/com/quantumcoin/app/keystorage/SecureStorage.java index 8329952..6233965 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/keystorage/SecureStorage.java +++ b/app/src/main/java/com/quantumcoin/app/keystorage/SecureStorage.java @@ -1,9 +1,9 @@ -package com.quantumcoinwallet.app.keystorage; +package com.quantumcoin.app.keystorage; import android.content.Context; -import com.quantumcoinwallet.app.bridge.QuantumCoinJSBridge; -import com.quantumcoinwallet.app.strongbox.StrongboxPayload; +import com.quantumcoin.app.bridge.QuantumCoinJSBridge; +import com.quantumcoin.app.strongbox.StrongboxPayload; import java.util.HashMap; import java.util.Map; @@ -13,9 +13,9 @@ /** * Password-encrypted wallet storage facade. Today this class is a * thin compatibility wrapper over {@link UnlockCoordinator} and the - * v2 layered strongbox stack ({@link com.quantumcoinwallet.app.strongbox.StrongboxFileCodec}, - * {@link com.quantumcoinwallet.app.storage.AtomicSlotWriter}, - * {@link com.quantumcoinwallet.app.strongbox.StrongboxPadding}, + * v2 layered strongbox stack ({@link com.quantumcoin.app.strongbox.StrongboxFileCodec}, + * {@link com.quantumcoin.app.storage.AtomicSlotWriter}, + * {@link com.quantumcoin.app.strongbox.StrongboxPadding}, * {@link Aead}, {@link MacUtil}). *

the legacy per-wallet * SharedPreferences-key model has been replaced by a single @@ -99,7 +99,7 @@ public boolean isUnlocked() { * password) without a heavyweight re-unlock.

*

Callers MUST run this on a background thread (~1-3s on * mid-range hardware) and MUST consult - * {@link com.quantumcoinwallet.app.security.UnlockAttemptLimiter} + * {@link com.quantumcoin.app.security.UnlockAttemptLimiter} * before calling: this method itself does NOT record limiter * events so the calling site can pick the appropriate * channel.

@@ -147,7 +147,7 @@ public boolean unlock(Context ctx, String password) { // because the migration may need to persist (which now // requires the user password to re-derive mainKey). try { - com.quantumcoinwallet.app.utils.NetworkPersistence + com.quantumcoin.app.utils.NetworkPersistence .migrateLegacyOnUnlockIfNeeded(ctx, this, password); } catch (Throwable t) { Timber.w(t, "SecureStorage.unlock: post-unlock migration failed"); @@ -175,8 +175,8 @@ public Map[] buildWalletMaps(Context ctx) throws Exception { String encoded = e.getValue(); if (encoded == null) continue; try { - com.quantumcoinwallet.app.strongbox.WalletEntryCodec.WalletEntry entry = - com.quantumcoinwallet.app.strongbox.WalletEntryCodec + com.quantumcoin.app.strongbox.WalletEntryCodec.WalletEntry entry = + com.quantumcoin.app.strongbox.WalletEntryCodec .decodeEntry(encoded); String address = entry.address; if (address == null || address.isEmpty()) { @@ -232,7 +232,7 @@ public void saveWallet(Context ctx, int index, String walletJson, String passwor // outer JSON payload demands a string value). Read // sites still see the legacy JSON shape via loadWallet. // Background: see WalletEntryCodec class header. - String encoded = com.quantumcoinwallet.app.strongbox.WalletEntryCodec.encode(walletJson); + String encoded = com.quantumcoin.app.strongbox.WalletEntryCodec.encode(walletJson); StrongboxPayload payload = coordinator.getLivePayload(); payload.wallets.put(String.valueOf(index), encoded); // v=3: maxWalletIndex is derived on demand from the @@ -247,7 +247,7 @@ public String loadWallet(Context ctx, int index) throws Exception { if (payload == null || payload.wallets == null) return null; String encoded = payload.wallets.get(String.valueOf(index)); if (encoded == null) return null; - return com.quantumcoinwallet.app.strongbox.WalletEntryCodec.decode(encoded); + return com.quantumcoin.app.strongbox.WalletEntryCodec.decode(encoded); } public int getMaxWalletIndex(Context ctx) { diff --git a/app/src/main/java/com/quantumcoinwallet/app/keystorage/TooManyAttemptsException.java b/app/src/main/java/com/quantumcoin/app/keystorage/TooManyAttemptsException.java similarity index 86% rename from app/src/main/java/com/quantumcoinwallet/app/keystorage/TooManyAttemptsException.java rename to app/src/main/java/com/quantumcoin/app/keystorage/TooManyAttemptsException.java index ac80f8e..3e30981 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/keystorage/TooManyAttemptsException.java +++ b/app/src/main/java/com/quantumcoin/app/keystorage/TooManyAttemptsException.java @@ -1,10 +1,10 @@ -package com.quantumcoinwallet.app.keystorage; +package com.quantumcoin.app.keystorage; import java.security.GeneralSecurityException; /** * Thrown by {@link UnlockCoordinator#persist} when the - * {@link com.quantumcoinwallet.app.security.UnlockAttemptLimiter} + * {@link com.quantumcoin.app.security.UnlockAttemptLimiter} * is engaged. Carries the remaining lockout seconds so the UI can * format a precise countdown message. * diff --git a/app/src/main/java/com/quantumcoinwallet/app/keystorage/UnlockCoordinator.java b/app/src/main/java/com/quantumcoin/app/keystorage/UnlockCoordinator.java similarity index 97% rename from app/src/main/java/com/quantumcoinwallet/app/keystorage/UnlockCoordinator.java rename to app/src/main/java/com/quantumcoin/app/keystorage/UnlockCoordinator.java index a82a5b5..da0dc01 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/keystorage/UnlockCoordinator.java +++ b/app/src/main/java/com/quantumcoin/app/keystorage/UnlockCoordinator.java @@ -1,13 +1,13 @@ -package com.quantumcoinwallet.app.keystorage; +package com.quantumcoin.app.keystorage; import android.content.Context; import android.util.Base64; -import com.quantumcoinwallet.app.bridge.QuantumCoinJSBridge; -import com.quantumcoinwallet.app.storage.AtomicSlotWriter; -import com.quantumcoinwallet.app.strongbox.StrongboxFileCodec; -import com.quantumcoinwallet.app.strongbox.StrongboxPadding; -import com.quantumcoinwallet.app.strongbox.StrongboxPayload; +import com.quantumcoin.app.bridge.QuantumCoinJSBridge; +import com.quantumcoin.app.storage.AtomicSlotWriter; +import com.quantumcoin.app.strongbox.StrongboxFileCodec; +import com.quantumcoin.app.strongbox.StrongboxPadding; +import com.quantumcoin.app.strongbox.StrongboxPayload; import org.json.JSONException; import org.json.JSONObject; @@ -532,9 +532,9 @@ public synchronized void persist(Context ctx, StrongboxPayload newPayload, // Brute-force limiter pre-check before paying scrypt cost. // Mirrors iOS persistSnapshot limiter check // (UnlockCoordinatorV2.swift lines 1143-1148). - com.quantumcoinwallet.app.security.UnlockAttemptLimiter.Decision decision = - com.quantumcoinwallet.app.security.UnlockAttemptLimiter.currentDecision(ctx); - if (decision.kind == com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter.Decision decision = + com.quantumcoin.app.security.UnlockAttemptLimiter.currentDecision(ctx); + if (decision.kind == com.quantumcoin.app.security.UnlockAttemptLimiter .DecisionKind.LOCKED) { throw new TooManyAttemptsException(decision.remainingSeconds); } @@ -558,8 +558,8 @@ public synchronized void persist(Context ctx, StrongboxPayload newPayload, // Wrong password on a write surface counts against // the same limiter as the unlock dialog (matches iOS // UnlockCoordinatorV2 lines 1175-1183). - com.quantumcoinwallet.app.security.UnlockAttemptLimiter.recordFailure(ctx, - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter.recordFailure(ctx, + com.quantumcoin.app.security.UnlockAttemptLimiter .Channel.STRONGBOX_UNLOCK); throw new WrongPasswordException( "persist: wrong password (passwordWrap open failed: " + ae.kind + ")"); @@ -610,8 +610,8 @@ public synchronized void persist(Context ctx, StrongboxPayload newPayload, // in `BackupExclusion.swift` / `Strongbox.swift`. // User proved knowledge of the current password. - com.quantumcoinwallet.app.security.UnlockAttemptLimiter.recordSuccess(ctx, - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter.recordSuccess(ctx, + com.quantumcoin.app.security.UnlockAttemptLimiter .Channel.STRONGBOX_UNLOCK); } finally { Arrays.fill(derivedKey, (byte) 0); diff --git a/app/src/main/java/com/quantumcoinwallet/app/keystorage/WrongPasswordException.java b/app/src/main/java/com/quantumcoin/app/keystorage/WrongPasswordException.java similarity index 94% rename from app/src/main/java/com/quantumcoinwallet/app/keystorage/WrongPasswordException.java rename to app/src/main/java/com/quantumcoin/app/keystorage/WrongPasswordException.java index acbeadc..2263a73 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/keystorage/WrongPasswordException.java +++ b/app/src/main/java/com/quantumcoin/app/keystorage/WrongPasswordException.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.keystorage; +package com.quantumcoin.app.keystorage; import java.security.GeneralSecurityException; diff --git a/app/src/main/java/com/quantumcoinwallet/app/model/BlockchainNetwork.java b/app/src/main/java/com/quantumcoin/app/model/BlockchainNetwork.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/model/BlockchainNetwork.java rename to app/src/main/java/com/quantumcoin/app/model/BlockchainNetwork.java index c421c21..51d77d0 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/model/BlockchainNetwork.java +++ b/app/src/main/java/com/quantumcoin/app/model/BlockchainNetwork.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.model; +package com.quantumcoin.app.model; import com.google.gson.annotations.SerializedName; diff --git a/app/src/main/java/com/quantumcoinwallet/app/networking/NetworkSnapshot.java b/app/src/main/java/com/quantumcoin/app/networking/NetworkSnapshot.java similarity index 97% rename from app/src/main/java/com/quantumcoinwallet/app/networking/NetworkSnapshot.java rename to app/src/main/java/com/quantumcoin/app/networking/NetworkSnapshot.java index a82d9a8..87da8e1 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/networking/NetworkSnapshot.java +++ b/app/src/main/java/com/quantumcoin/app/networking/NetworkSnapshot.java @@ -1,9 +1,9 @@ -package com.quantumcoinwallet.app.networking; +package com.quantumcoin.app.networking; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.quantumcoinwallet.app.utils.GlobalMethods; +import com.quantumcoin.app.utils.GlobalMethods; import java.util.Objects; diff --git a/app/src/main/java/com/quantumcoinwallet/app/networking/UrlBuilder.java b/app/src/main/java/com/quantumcoin/app/networking/UrlBuilder.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/networking/UrlBuilder.java rename to app/src/main/java/com/quantumcoin/app/networking/UrlBuilder.java index 18f6145..094b646 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/networking/UrlBuilder.java +++ b/app/src/main/java/com/quantumcoin/app/networking/UrlBuilder.java @@ -1,10 +1,10 @@ -package com.quantumcoinwallet.app.networking; +package com.quantumcoin.app.networking; import android.net.Uri; import androidx.annotation.Nullable; -import com.quantumcoinwallet.app.utils.GlobalMethods; +import com.quantumcoin.app.utils.GlobalMethods; import java.util.regex.Pattern; diff --git a/app/src/main/java/com/quantumcoinwallet/app/security/BundleIntegrity.java b/app/src/main/java/com/quantumcoin/app/security/BundleIntegrity.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/security/BundleIntegrity.java rename to app/src/main/java/com/quantumcoin/app/security/BundleIntegrity.java index da1c141..04d83c0 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/security/BundleIntegrity.java +++ b/app/src/main/java/com/quantumcoin/app/security/BundleIntegrity.java @@ -1,9 +1,9 @@ -package com.quantumcoinwallet.app.security; +package com.quantumcoin.app.security; import android.content.Context; import android.content.res.AssetManager; -import com.quantumcoinwallet.app.security.generated.GeneratedBundleHash; +import com.quantumcoin.app.security.generated.GeneratedBundleHash; import java.io.IOException; import java.io.InputStream; diff --git a/app/src/main/java/com/quantumcoinwallet/app/security/CredentialIdentifier.java b/app/src/main/java/com/quantumcoin/app/security/CredentialIdentifier.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/security/CredentialIdentifier.java rename to app/src/main/java/com/quantumcoin/app/security/CredentialIdentifier.java index c611568..2ee48c1 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/security/CredentialIdentifier.java +++ b/app/src/main/java/com/quantumcoin/app/security/CredentialIdentifier.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.security; +package com.quantumcoin.app.security; import android.text.TextUtils; import android.util.TypedValue; diff --git a/app/src/main/java/com/quantumcoinwallet/app/security/ScreenCaptureGuard.java b/app/src/main/java/com/quantumcoin/app/security/ScreenCaptureGuard.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/security/ScreenCaptureGuard.java rename to app/src/main/java/com/quantumcoin/app/security/ScreenCaptureGuard.java index f305918..c106562 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/security/ScreenCaptureGuard.java +++ b/app/src/main/java/com/quantumcoin/app/security/ScreenCaptureGuard.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.security; +package com.quantumcoin.app.security; import android.app.Activity; import android.content.Context; diff --git a/app/src/main/java/com/quantumcoinwallet/app/security/TamperGate.java b/app/src/main/java/com/quantumcoin/app/security/TamperGate.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/security/TamperGate.java rename to app/src/main/java/com/quantumcoin/app/security/TamperGate.java index 17fb635..e518c58 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/security/TamperGate.java +++ b/app/src/main/java/com/quantumcoin/app/security/TamperGate.java @@ -1,9 +1,9 @@ -package com.quantumcoinwallet.app.security; +package com.quantumcoin.app.security; import android.content.Context; import android.os.Debug; -import com.quantumcoinwallet.app.BuildConfig; +import com.quantumcoin.app.BuildConfig; import java.io.File; import java.util.ArrayList; diff --git a/app/src/main/java/com/quantumcoinwallet/app/security/TamperGatePolicy.java b/app/src/main/java/com/quantumcoin/app/security/TamperGatePolicy.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/security/TamperGatePolicy.java rename to app/src/main/java/com/quantumcoin/app/security/TamperGatePolicy.java index e3eb1ce..9435d0a 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/security/TamperGatePolicy.java +++ b/app/src/main/java/com/quantumcoin/app/security/TamperGatePolicy.java @@ -1,11 +1,11 @@ -package com.quantumcoinwallet.app.security; +package com.quantumcoin.app.security; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.SharedPreferences; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.viewmodel.JsonViewModel; /** * Policy + UI surface that consumes the {@link TamperGate.TamperReport} diff --git a/app/src/main/java/com/quantumcoinwallet/app/security/TlsPinning.java b/app/src/main/java/com/quantumcoin/app/security/TlsPinning.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/security/TlsPinning.java rename to app/src/main/java/com/quantumcoin/app/security/TlsPinning.java index fd71104..1af5c20 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/security/TlsPinning.java +++ b/app/src/main/java/com/quantumcoin/app/security/TlsPinning.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.security; +package com.quantumcoin.app.security; import android.util.Base64; diff --git a/app/src/main/java/com/quantumcoinwallet/app/security/UnlockAttemptLimiter.java b/app/src/main/java/com/quantumcoin/app/security/UnlockAttemptLimiter.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/security/UnlockAttemptLimiter.java rename to app/src/main/java/com/quantumcoin/app/security/UnlockAttemptLimiter.java index 7a7fbc3..d50fb80 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/security/UnlockAttemptLimiter.java +++ b/app/src/main/java/com/quantumcoin/app/security/UnlockAttemptLimiter.java @@ -1,16 +1,16 @@ -package com.quantumcoinwallet.app.security; +package com.quantumcoin.app.security; import android.content.Context; import android.content.SharedPreferences; import android.os.SystemClock; -import com.quantumcoinwallet.app.Logger; +import com.quantumcoin.app.Logger; /** * Rate-limiting for any password-based unlock attempt against * the strongbox or against a backup-restore decrypt. *

Why this exists: - * {@link com.quantumcoinwallet.app.keystorage.UnlockCoordinator#unlock} + * {@link com.quantumcoin.app.keystorage.UnlockCoordinator#unlock} * runs scrypt with N=2^18, r=8, p=1 on the user's password. * That is roughly 200-1000 ms per attempt on modern Android * devices. Without rate limiting, an attacker who has the @@ -213,7 +213,7 @@ public static void recordFailure(Context ctx, Channel channel) { * typo") is more important than perfect language fidelity in * the lockout path, so an English fallback is acceptable.

*/ public static String userFacingLockoutMessage(long remainingSeconds, - com.quantumcoinwallet.app.viewmodel.JsonViewModel vm) { + com.quantumcoin.app.viewmodel.JsonViewModel vm) { if (remainingSeconds < 60) { String tpl = (vm == null) ? null : vm.getUnlockTooManyAttemptsSecondsByErrors(); if (tpl == null || tpl.isEmpty()) { diff --git a/app/src/main/java/com/quantumcoinwallet/app/security/generated/GeneratedBundleHash.java b/app/src/main/java/com/quantumcoin/app/security/generated/GeneratedBundleHash.java similarity index 96% rename from app/src/main/java/com/quantumcoinwallet/app/security/generated/GeneratedBundleHash.java rename to app/src/main/java/com/quantumcoin/app/security/generated/GeneratedBundleHash.java index 6eecaf4..c16b350 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/security/generated/GeneratedBundleHash.java +++ b/app/src/main/java/com/quantumcoin/app/security/generated/GeneratedBundleHash.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.security.generated; +package com.quantumcoin.app.security.generated; // AUTO-GENERATED at build time by the embedBundleHash Gradle task in // app/build.gradle. DO NOT EDIT. Any local changes will be overwritten diff --git a/app/src/main/java/com/quantumcoinwallet/app/services/IKeyService.java b/app/src/main/java/com/quantumcoin/app/services/IKeyService.java similarity index 95% rename from app/src/main/java/com/quantumcoinwallet/app/services/IKeyService.java rename to app/src/main/java/com/quantumcoin/app/services/IKeyService.java index 615636c..184ab0f 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/services/IKeyService.java +++ b/app/src/main/java/com/quantumcoin/app/services/IKeyService.java @@ -1,6 +1,6 @@ -package com.quantumcoinwallet.app.services; +package com.quantumcoin.app.services; -import com.quantumcoinwallet.app.bridge.BridgeCallback; +import com.quantumcoin.app.bridge.BridgeCallback; public interface IKeyService { void createRandomSeed(int keyType, BridgeCallback callback); diff --git a/app/src/main/java/com/quantumcoinwallet/app/services/KeyService.java b/app/src/main/java/com/quantumcoin/app/services/KeyService.java similarity index 96% rename from app/src/main/java/com/quantumcoinwallet/app/services/KeyService.java rename to app/src/main/java/com/quantumcoin/app/services/KeyService.java index 09f546d..de4e172 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/services/KeyService.java +++ b/app/src/main/java/com/quantumcoin/app/services/KeyService.java @@ -1,7 +1,7 @@ -package com.quantumcoinwallet.app.services; +package com.quantumcoin.app.services; -import com.quantumcoinwallet.app.bridge.BridgeCallback; -import com.quantumcoinwallet.app.bridge.QuantumCoinJSBridge; +import com.quantumcoin.app.bridge.BridgeCallback; +import com.quantumcoin.app.bridge.QuantumCoinJSBridge; public class KeyService implements IKeyService { private final QuantumCoinJSBridge bridge; diff --git a/app/src/main/java/com/quantumcoinwallet/app/storage/AtomicSlotWriter.java b/app/src/main/java/com/quantumcoin/app/storage/AtomicSlotWriter.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/storage/AtomicSlotWriter.java rename to app/src/main/java/com/quantumcoin/app/storage/AtomicSlotWriter.java index 0d31f52..855d3c5 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/storage/AtomicSlotWriter.java +++ b/app/src/main/java/com/quantumcoin/app/storage/AtomicSlotWriter.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.storage; +package com.quantumcoin.app.storage; import android.content.Context; import android.system.ErrnoException; diff --git a/app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxFileCodec.java b/app/src/main/java/com/quantumcoin/app/strongbox/StrongboxFileCodec.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxFileCodec.java rename to app/src/main/java/com/quantumcoin/app/strongbox/StrongboxFileCodec.java index 9ce3ddf..a3ad4cf 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxFileCodec.java +++ b/app/src/main/java/com/quantumcoin/app/strongbox/StrongboxFileCodec.java @@ -1,10 +1,10 @@ -package com.quantumcoinwallet.app.strongbox; +package com.quantumcoin.app.strongbox; import android.content.Context; -import com.quantumcoinwallet.app.keystorage.Aead; -import com.quantumcoinwallet.app.keystorage.MacUtil; -import com.quantumcoinwallet.app.storage.AtomicSlotWriter; +import com.quantumcoin.app.keystorage.Aead; +import com.quantumcoin.app.keystorage.MacUtil; +import com.quantumcoin.app.storage.AtomicSlotWriter; import org.json.JSONException; import org.json.JSONObject; @@ -46,7 +46,7 @@ *
    *
  • Layer 1 sees only opaque bytes ({@link AtomicSlotWriter}).
  • *
  • Layer 3 sees only AEAD primitives ({@link Aead}, {@link MacUtil}).
  • - *
  • Layer 4 ({@link com.quantumcoinwallet.app.keystorage.UnlockCoordinator}) + *
  • Layer 4 ({@link com.quantumcoin.app.keystorage.UnlockCoordinator}) * sees a typed decode result ({@link DecodedFile}) with * fields like {@code salt}, {@code passwordWrap}, * {@code strongbox}, {@code mac} and never touches their diff --git a/app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxPadding.java b/app/src/main/java/com/quantumcoin/app/strongbox/StrongboxPadding.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxPadding.java rename to app/src/main/java/com/quantumcoin/app/strongbox/StrongboxPadding.java index 30b2a7f..e418878 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxPadding.java +++ b/app/src/main/java/com/quantumcoin/app/strongbox/StrongboxPadding.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.strongbox; +package com.quantumcoin.app.strongbox; import java.util.Arrays; diff --git a/app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxPayload.java b/app/src/main/java/com/quantumcoin/app/strongbox/StrongboxPayload.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxPayload.java rename to app/src/main/java/com/quantumcoin/app/strongbox/StrongboxPayload.java index f279e46..b6bc461 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxPayload.java +++ b/app/src/main/java/com/quantumcoin/app/strongbox/StrongboxPayload.java @@ -1,10 +1,10 @@ -package com.quantumcoinwallet.app.strongbox; +package com.quantumcoin.app.strongbox; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.annotations.SerializedName; -import com.quantumcoinwallet.app.keystorage.MacUtil; +import com.quantumcoin.app.keystorage.MacUtil; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; @@ -22,7 +22,7 @@ *

    Layer 5 of the storage stack — the highest-level model the * crypto layers see. {@link StrongboxFileCodec} (layer 2) is the * only place that knows how this object is serialised onto disk, - * and {@link com.quantumcoinwallet.app.storage.AtomicSlotWriter} + * and {@link com.quantumcoin.app.storage.AtomicSlotWriter} * (layer 1) sees it only as opaque bytes.

    * *

    v=3 unified-schema (notes for reviewers): diff --git a/app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxRedundancyState.java b/app/src/main/java/com/quantumcoin/app/strongbox/StrongboxRedundancyState.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxRedundancyState.java rename to app/src/main/java/com/quantumcoin/app/strongbox/StrongboxRedundancyState.java index e3a3f34..9b94a1e 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/strongbox/StrongboxRedundancyState.java +++ b/app/src/main/java/com/quantumcoin/app/strongbox/StrongboxRedundancyState.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.strongbox; +package com.quantumcoin.app.strongbox; import androidx.annotation.NonNull; diff --git a/app/src/main/java/com/quantumcoinwallet/app/strongbox/WalletEntryCodec.java b/app/src/main/java/com/quantumcoin/app/strongbox/WalletEntryCodec.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/strongbox/WalletEntryCodec.java rename to app/src/main/java/com/quantumcoin/app/strongbox/WalletEntryCodec.java index 30fd405..7f595ac 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/strongbox/WalletEntryCodec.java +++ b/app/src/main/java/com/quantumcoin/app/strongbox/WalletEntryCodec.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.strongbox; +package com.quantumcoin.app.strongbox; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -76,7 +76,7 @@ *

* *

The codec is fully encapsulated inside - * {@link com.quantumcoinwallet.app.keystorage.SecureStorage#saveWallet} + * {@link com.quantumcoin.app.keystorage.SecureStorage#saveWallet} * and {@code loadWallet}; callers continue to hand the storage * layer the same JSON shape they always have. That keeps the * read sites (Send/Reveal) untouched and lets us swap the diff --git a/app/src/main/java/com/quantumcoinwallet/app/tokens/RecognizedTokens.java b/app/src/main/java/com/quantumcoin/app/tokens/RecognizedTokens.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/tokens/RecognizedTokens.java rename to app/src/main/java/com/quantumcoin/app/tokens/RecognizedTokens.java index cdf31da..9dc3220 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/tokens/RecognizedTokens.java +++ b/app/src/main/java/com/quantumcoin/app/tokens/RecognizedTokens.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.tokens; +package com.quantumcoin.app.tokens; import java.util.Arrays; import java.util.Collections; diff --git a/app/src/main/java/com/quantumcoinwallet/app/tokens/StablecoinImpersonatorFilter.java b/app/src/main/java/com/quantumcoin/app/tokens/StablecoinImpersonatorFilter.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/tokens/StablecoinImpersonatorFilter.java rename to app/src/main/java/com/quantumcoin/app/tokens/StablecoinImpersonatorFilter.java index 93f0cee..ac768f9 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/tokens/StablecoinImpersonatorFilter.java +++ b/app/src/main/java/com/quantumcoin/app/tokens/StablecoinImpersonatorFilter.java @@ -1,6 +1,6 @@ -package com.quantumcoinwallet.app.tokens; +package com.quantumcoin.app.tokens; -import com.quantumcoinwallet.app.api.read.model.AccountTokenSummary; +import com.quantumcoin.app.api.read.model.AccountTokenSummary; import java.util.ArrayList; import java.util.Arrays; diff --git a/app/src/main/java/com/quantumcoinwallet/app/utils/AccountTransactionUi.java b/app/src/main/java/com/quantumcoin/app/utils/AccountTransactionUi.java similarity index 91% rename from app/src/main/java/com/quantumcoinwallet/app/utils/AccountTransactionUi.java rename to app/src/main/java/com/quantumcoin/app/utils/AccountTransactionUi.java index 00e4d96..84f050a 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/utils/AccountTransactionUi.java +++ b/app/src/main/java/com/quantumcoin/app/utils/AccountTransactionUi.java @@ -1,7 +1,7 @@ -package com.quantumcoinwallet.app.utils; +package com.quantumcoin.app.utils; -import com.quantumcoinwallet.app.api.read.model.AccountTransactionSummary; -import com.quantumcoinwallet.app.api.read.model.Receipt; +import com.quantumcoin.app.api.read.model.AccountTransactionSummary; +import com.quantumcoin.app.api.read.model.Receipt; /** * Display rules for the transaction list, aligned with the desktop wallet diff --git a/app/src/main/java/com/quantumcoinwallet/app/utils/CoinUtils.java b/app/src/main/java/com/quantumcoin/app/utils/CoinUtils.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/utils/CoinUtils.java rename to app/src/main/java/com/quantumcoin/app/utils/CoinUtils.java index 6746805..736b48a 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/utils/CoinUtils.java +++ b/app/src/main/java/com/quantumcoin/app/utils/CoinUtils.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.utils; +package com.quantumcoin.app.utils; import java.math.BigDecimal; import java.math.BigInteger; diff --git a/app/src/main/java/com/quantumcoinwallet/app/utils/GlobalMethods.java b/app/src/main/java/com/quantumcoin/app/utils/GlobalMethods.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/utils/GlobalMethods.java rename to app/src/main/java/com/quantumcoin/app/utils/GlobalMethods.java index 301b45a..8eea7c1 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/utils/GlobalMethods.java +++ b/app/src/main/java/com/quantumcoin/app/utils/GlobalMethods.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.utils; +package com.quantumcoin.app.utils; import android.app.Activity; import android.app.Dialog; @@ -22,9 +22,9 @@ import androidx.annotation.RawRes; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.api.read.model.AccountTokenSummary; -import com.quantumcoinwallet.app.model.BlockchainNetwork; +import com.quantumcoin.app.R; +import com.quantumcoin.app.api.read.model.AccountTokenSummary; +import com.quantumcoin.app.model.BlockchainNetwork; import org.json.JSONArray; import org.json.JSONException; @@ -161,8 +161,8 @@ public static List BlockChainNetworkRead(Context context) thr // into the strongbox at next unlock and clears the prefs // key, so a fresh-install on a device that never unlocks // behaves identically to the strongbox-empty case. - com.quantumcoinwallet.app.keystorage.SecureStorage secureStorage = - com.quantumcoinwallet.app.viewmodel.KeyViewModel.getSecureStorage(); + com.quantumcoin.app.keystorage.SecureStorage secureStorage = + com.quantumcoin.app.viewmodel.KeyViewModel.getSecureStorage(); return NetworkPersistence.readNetworks(context, secureStorage); } @@ -215,7 +215,7 @@ public static void ExceptionError(Context context, String tag, Exception e) { public static void ShowErrorDialog(Context context, String title, String message) { // Always route through Timber so ReleaseTree can redact/strip. // Only write debug details when explicitly running a debug build. - if (com.quantumcoinwallet.app.BuildConfig.DEBUG) { + if (com.quantumcoin.app.BuildConfig.DEBUG) { timber.log.Timber.tag("QuantumCoinWallet").w("%s: %s", title, message); } if (context instanceof Activity && !((Activity) context).isFinishing()) { diff --git a/app/src/main/java/com/quantumcoinwallet/app/utils/GridAutoFitLayoutManager.java b/app/src/main/java/com/quantumcoin/app/utils/GridAutoFitLayoutManager.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/utils/GridAutoFitLayoutManager.java rename to app/src/main/java/com/quantumcoin/app/utils/GridAutoFitLayoutManager.java index 8d62f2f..cabee6a 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/utils/GridAutoFitLayoutManager.java +++ b/app/src/main/java/com/quantumcoin/app/utils/GridAutoFitLayoutManager.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.utils; +package com.quantumcoin.app.utils; import android.content.Context; import androidx.recyclerview.widget.GridLayoutManager; diff --git a/app/src/main/java/com/quantumcoinwallet/app/utils/NetworkPersistence.java b/app/src/main/java/com/quantumcoin/app/utils/NetworkPersistence.java similarity index 97% rename from app/src/main/java/com/quantumcoinwallet/app/utils/NetworkPersistence.java rename to app/src/main/java/com/quantumcoin/app/utils/NetworkPersistence.java index 50ae7a9..aa9868c 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/utils/NetworkPersistence.java +++ b/app/src/main/java/com/quantumcoin/app/utils/NetworkPersistence.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.utils; +package com.quantumcoin.app.utils; import android.content.Context; import android.text.TextUtils; @@ -6,10 +6,10 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.quantumcoinwallet.app.keystorage.SecureStorage; -import com.quantumcoinwallet.app.keystorage.UnlockCoordinator; -import com.quantumcoinwallet.app.model.BlockchainNetwork; -import com.quantumcoinwallet.app.strongbox.StrongboxPayload; +import com.quantumcoin.app.keystorage.SecureStorage; +import com.quantumcoin.app.keystorage.UnlockCoordinator; +import com.quantumcoin.app.model.BlockchainNetwork; +import com.quantumcoin.app.strongbox.StrongboxPayload; import org.json.JSONArray; import org.json.JSONObject; @@ -357,7 +357,7 @@ private static List parseLegacyNetworks(@NonNull String json) private static List readBundled(@NonNull Context ctx) { try { String json = GlobalMethods.readRawResource(ctx, - com.quantumcoinwallet.app.R.raw.blockchain_networks); + com.quantumcoin.app.R.raw.blockchain_networks); return parseLegacyNetworks(json); } catch (Throwable t) { Timber.w(t, "%s: bundled network read failed; returning empty list", TAG); diff --git a/app/src/main/java/com/quantumcoinwallet/app/utils/PrefConnect.java b/app/src/main/java/com/quantumcoin/app/utils/PrefConnect.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/utils/PrefConnect.java rename to app/src/main/java/com/quantumcoin/app/utils/PrefConnect.java index 7452dbd..999f63a 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/utils/PrefConnect.java +++ b/app/src/main/java/com/quantumcoin/app/utils/PrefConnect.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.utils; +package com.quantumcoin.app.utils; import android.content.Context; import android.content.SharedPreferences; @@ -38,7 +38,7 @@ * * Wallet bytes, networks, per-address passwords, and any other * secret-or-sensitive data live in the strongbox slot files - * managed by {@link com.quantumcoinwallet.app.keystorage.UnlockCoordinator} + * managed by {@link com.quantumcoin.app.keystorage.UnlockCoordinator} * and are never written to SharedPreferences.

*

Migration note: * {@link #BLOCKCHAIN_NETWORK_LIST} is retained as a transitional diff --git a/app/src/main/java/com/quantumcoinwallet/app/utils/SecureClipboard.java b/app/src/main/java/com/quantumcoin/app/utils/SecureClipboard.java similarity index 95% rename from app/src/main/java/com/quantumcoinwallet/app/utils/SecureClipboard.java rename to app/src/main/java/com/quantumcoin/app/utils/SecureClipboard.java index e8bc966..f5c28c1 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/utils/SecureClipboard.java +++ b/app/src/main/java/com/quantumcoin/app/utils/SecureClipboard.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.utils; +package com.quantumcoin.app.utils; import android.content.ClipData; import android.content.ClipDescription; @@ -113,10 +113,10 @@ public void run() { } else { m.setPrimaryClip(ClipData.newPlainText("", "")); } - com.quantumcoinwallet.app.Logger.d("SecureClipboard", "auto-cleared"); + com.quantumcoin.app.Logger.d("SecureClipboard", "auto-cleared"); } } catch (Throwable t) { - com.quantumcoinwallet.app.Logger.w("SecureClipboard", "auto-clear", t); + com.quantumcoin.app.Logger.w("SecureClipboard", "auto-clear", t); } } }, AUTO_CLEAR_MS); diff --git a/app/src/main/java/com/quantumcoinwallet/app/utils/Utility.java b/app/src/main/java/com/quantumcoin/app/utils/Utility.java similarity index 97% rename from app/src/main/java/com/quantumcoinwallet/app/utils/Utility.java rename to app/src/main/java/com/quantumcoin/app/utils/Utility.java index a7d4f2e..80da79f 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/utils/Utility.java +++ b/app/src/main/java/com/quantumcoin/app/utils/Utility.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.utils; +package com.quantumcoin.app.utils; import android.content.Context; import android.content.res.Resources; diff --git a/app/src/main/java/com/quantumcoinwallet/app/ux/SnapshotRedactor.java b/app/src/main/java/com/quantumcoin/app/ux/SnapshotRedactor.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/ux/SnapshotRedactor.java rename to app/src/main/java/com/quantumcoin/app/ux/SnapshotRedactor.java index 3235727..5d7838f 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/ux/SnapshotRedactor.java +++ b/app/src/main/java/com/quantumcoin/app/ux/SnapshotRedactor.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.ux; +package com.quantumcoin.app.ux; import android.app.Activity; import android.app.Application; diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/activities/HomeActivity.java b/app/src/main/java/com/quantumcoin/app/view/activities/HomeActivity.java similarity index 93% rename from app/src/main/java/com/quantumcoinwallet/app/view/activities/HomeActivity.java rename to app/src/main/java/com/quantumcoin/app/view/activities/HomeActivity.java index 5259930..2b50c03 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/activities/HomeActivity.java +++ b/app/src/main/java/com/quantumcoin/app/view/activities/HomeActivity.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.activities; +package com.quantumcoin.app.view.activities; import android.Manifest; import android.annotation.SuppressLint; @@ -35,32 +35,32 @@ import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentTransaction; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.api.read.ApiClient; -import com.quantumcoinwallet.app.api.read.model.BalanceResponse; -import com.quantumcoinwallet.app.asynctask.read.AccountBalanceRestTask; -import com.quantumcoinwallet.app.entity.ServiceException; -import com.quantumcoinwallet.app.model.BlockchainNetwork; -import com.quantumcoinwallet.app.utils.GlobalMethods; -import com.quantumcoinwallet.app.utils.PrefConnect; -import com.quantumcoinwallet.app.utils.Utility; -import com.quantumcoinwallet.app.view.fragment.BlockchainNetworkAddFragment; -import com.quantumcoinwallet.app.view.fragment.BlockchainNetworkDialogFragment; -import com.quantumcoinwallet.app.view.fragment.BlockchainNetworkFragment; -import com.quantumcoinwallet.app.view.fragment.HomeMainFragment; -import com.quantumcoinwallet.app.view.fragment.HomeStartFragment; -import com.quantumcoinwallet.app.view.fragment.HomeWalletFragment; -import com.quantumcoinwallet.app.view.fragment.ReceiveFragment; -import com.quantumcoinwallet.app.view.fragment.SendFragment; -import com.quantumcoinwallet.app.view.fragment.SettingsFragment; -import com.quantumcoinwallet.app.view.fragment.RevealWalletFragment; -import com.quantumcoinwallet.app.view.fragment.AccountTransactionsFragment; - -import com.quantumcoinwallet.app.view.fragment.WalletsFragment; -import com.quantumcoinwallet.app.utils.CoinUtils; -import com.quantumcoinwallet.app.keystorage.SecureStorage; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; -import com.quantumcoinwallet.app.viewmodel.KeyViewModel; +import com.quantumcoin.app.R; +import com.quantumcoin.app.api.read.ApiClient; +import com.quantumcoin.app.api.read.model.BalanceResponse; +import com.quantumcoin.app.asynctask.read.AccountBalanceRestTask; +import com.quantumcoin.app.entity.ServiceException; +import com.quantumcoin.app.model.BlockchainNetwork; +import com.quantumcoin.app.utils.GlobalMethods; +import com.quantumcoin.app.utils.PrefConnect; +import com.quantumcoin.app.utils.Utility; +import com.quantumcoin.app.view.fragment.BlockchainNetworkAddFragment; +import com.quantumcoin.app.view.fragment.BlockchainNetworkDialogFragment; +import com.quantumcoin.app.view.fragment.BlockchainNetworkFragment; +import com.quantumcoin.app.view.fragment.HomeMainFragment; +import com.quantumcoin.app.view.fragment.HomeStartFragment; +import com.quantumcoin.app.view.fragment.HomeWalletFragment; +import com.quantumcoin.app.view.fragment.ReceiveFragment; +import com.quantumcoin.app.view.fragment.SendFragment; +import com.quantumcoin.app.view.fragment.SettingsFragment; +import com.quantumcoin.app.view.fragment.RevealWalletFragment; +import com.quantumcoin.app.view.fragment.AccountTransactionsFragment; + +import com.quantumcoin.app.view.fragment.WalletsFragment; +import com.quantumcoin.app.utils.CoinUtils; +import com.quantumcoin.app.keystorage.SecureStorage; +import com.quantumcoin.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.viewmodel.KeyViewModel; import com.google.android.material.bottomnavigation.BottomNavigationView; @@ -83,7 +83,7 @@ public class HomeActivity extends FragmentActivity implements AccountTransactionsFragment.OnAccountTransactionsCompleteListener, WalletsFragment.OnWalletsCompleteListener, SettingsFragment.OnSettingsCompleteListener, RevealWalletFragment.OnRevealWalletCompleteListener, - com.quantumcoinwallet.app.view.fragment.BackupOptionsFragment.OnBackupOptionsCompleteListener { + com.quantumcoin.app.view.fragment.BackupOptionsFragment.OnBackupOptionsCompleteListener { private static final String TAG = "HomeActivity"; private static final long UNLOCK_TIMEOUT_MS = 300_000; @@ -172,11 +172,11 @@ public void onCreate(Bundle savedInstanceState) { // TamperGatePolicy.apply(...) so the user sees an // explicit warning rather than a silent refusal. try { - com.quantumcoinwallet.app.security.TamperGate.bootstrap( + com.quantumcoin.app.security.TamperGate.bootstrap( getApplicationContext()); - com.quantumcoinwallet.app.security.TamperGate.TamperReport report = - com.quantumcoinwallet.app.security.TamperGate.currentReport(); - com.quantumcoinwallet.app.security.TamperGatePolicy.apply( + com.quantumcoin.app.security.TamperGate.TamperReport report = + com.quantumcoin.app.security.TamperGate.currentReport(); + com.quantumcoin.app.security.TamperGatePolicy.apply( HomeActivity.this, report, jsonViewModel); } catch (Throwable t) { // Probes must never crash the app; a bug in the gate @@ -249,16 +249,16 @@ public void onCreate(Bundle savedInstanceState) { createNotificationChannel(); } - int storedNetworkIndex = com.quantumcoinwallet.app.utils.NetworkPersistence + int storedNetworkIndex = com.quantumcoin.app.utils.NetworkPersistence .readActiveIndex(getApplicationContext(), - com.quantumcoinwallet.app.viewmodel.KeyViewModel + com.quantumcoin.app.viewmodel.KeyViewModel .getSecureStorage()); List blockchainNetworkList = GlobalMethods.BlockChainNetworkRead(getApplicationContext()); int maxNetworkIdx = Math.max(0, blockchainNetworkList.size() - 1); int initialIdx = Math.max(0, Math.min(storedNetworkIndex, maxNetworkIdx)); if (initialIdx != storedNetworkIndex) { - com.quantumcoinwallet.app.Logger.w(TAG, "Stored network index out of range; clamped to " + initialIdx); + com.quantumcoin.app.Logger.w(TAG, "Stored network index out of range; clamped to " + initialIdx); // Persist the clamped value to legacy prefs only. // The strongbox path requires the user password to // re-derive mainKey on persist; at cold start we @@ -285,9 +285,9 @@ public void onClick(View v) { // (the prior behavior) meant the dialog kept // showing the cold-start network as active even // after a switch. - int currentIdx = com.quantumcoinwallet.app.utils.NetworkPersistence + int currentIdx = com.quantumcoin.app.utils.NetworkPersistence .readActiveIndex(getApplicationContext(), - com.quantumcoinwallet.app.viewmodel.KeyViewModel + com.quantumcoin.app.viewmodel.KeyViewModel .getSecureStorage()); bundle.putString("blockchainNetworkIdIndex", String.valueOf(currentIdx)); @@ -303,7 +303,7 @@ public void onClick(View v) { public void onClick(View v) { // IS_SENSITIVE so Android 13+ clipboard previews // do not render the full address. - com.quantumcoinwallet.app.utils.SecureClipboard.copyAddress( + com.quantumcoin.app.utils.SecureClipboard.copyAddress( HomeActivity.this, "currentAddress", walletAddressTextView.getText()); homeCopiedTextView.setVisibility(View.VISIBLE); @@ -321,7 +321,7 @@ public void onClick(View v) { // Route through UrlBuilder so the address is // regex-validated and percent-encoded before // pivoting the user into the system browser. - Uri u = com.quantumcoinwallet.app.networking.UrlBuilder + Uri u = com.quantumcoin.app.networking.UrlBuilder .blockExplorerAccountUrl( walletAddressTextView.getText() == null ? null : walletAddressTextView.getText().toString()); @@ -427,11 +427,11 @@ public void onBackPressed() { // HomeWalletFragment wizard, to its public handleBackPressed // helper) so the two paths cannot diverge again. Fragment current = getSupportFragmentManager().findFragmentById(R.id.frame_home_container_id); - if (current instanceof com.quantumcoinwallet.app.view.fragment.HomeWalletFragment) { - com.quantumcoinwallet.app.view.fragment.HomeWalletFragment hw = - (com.quantumcoinwallet.app.view.fragment.HomeWalletFragment) current; + if (current instanceof com.quantumcoin.app.view.fragment.HomeWalletFragment) { + com.quantumcoin.app.view.fragment.HomeWalletFragment hw = + (com.quantumcoin.app.view.fragment.HomeWalletFragment) current; if (hw.handleBackPressed()) return; - } else if (current instanceof com.quantumcoinwallet.app.view.fragment.BackupOptionsFragment) { + } else if (current instanceof com.quantumcoin.app.view.fragment.BackupOptionsFragment) { onBackupOptionsBack(); return; } else if (current instanceof BlockchainNetworkAddFragment) { @@ -505,7 +505,7 @@ public void performHomeRefresh() { getBalanceByAccount(walletAddress, balanceValueTextView, progressBar); GlobalMethods.CURRENT_WALLET_TOKEN_LIST = new java.util.ArrayList<>(); GlobalMethods.CURRENT_WALLET_TOKEN_LIST_ADDRESS = null; - com.quantumcoinwallet.app.events.NetworkChangeBroadcaster + com.quantumcoin.app.events.NetworkChangeBroadcaster .broadcastActiveNetworkChanged(getApplicationContext()); } catch (Exception e) { GlobalMethods.ExceptionError(getApplicationContext(), TAG, e); @@ -600,9 +600,9 @@ public void onBlockchainNetworkDialogOk() { */ private void refreshActiveNetworkChrome(boolean reloadBalance) { try { - int idx = com.quantumcoinwallet.app.utils.NetworkPersistence + int idx = com.quantumcoin.app.utils.NetworkPersistence .readActiveIndex(getApplicationContext(), - com.quantumcoinwallet.app.viewmodel.KeyViewModel + com.quantumcoin.app.viewmodel.KeyViewModel .getSecureStorage()); java.util.List nets = GlobalMethods.BlockChainNetworkRead(getApplicationContext()); @@ -720,13 +720,13 @@ public void onWalletsCompleteByBackup(String walletAddress, String walletPasswor // address and password through the shared activity // bundle the way RevealWalletFragment does. bundle.putString( - com.quantumcoinwallet.app.view.fragment + com.quantumcoin.app.view.fragment .BackupOptionsFragment.ARG_ADDRESS, walletAddress); bundle.putString( - com.quantumcoinwallet.app.view.fragment + com.quantumcoin.app.view.fragment .BackupOptionsFragment.ARG_PASSWORD, walletPassword); beginTransactionNow( - com.quantumcoinwallet.app.view.fragment.BackupOptionsFragment + com.quantumcoin.app.view.fragment.BackupOptionsFragment .newInstance(), bundle); // Wipe the password back out of the shared bundle so it @@ -734,9 +734,9 @@ public void onWalletsCompleteByBackup(String walletAddress, String walletPasswor // BackupOptionsFragment has already copied the value // into its own field by this point because // beginTransactionNow uses commitNow. - bundle.remove(com.quantumcoinwallet.app.view.fragment + bundle.remove(com.quantumcoin.app.view.fragment .BackupOptionsFragment.ARG_PASSWORD); - bundle.remove(com.quantumcoinwallet.app.view.fragment + bundle.remove(com.quantumcoin.app.view.fragment .BackupOptionsFragment.ARG_ADDRESS); } catch (Exception e) { GlobalMethods.ExceptionError(getApplicationContext(), TAG, e); @@ -928,9 +928,9 @@ public boolean onKey(android.content.DialogInterface d, int keyCode, passwordEditText.setHint(jsonViewModel.getEnterApasswordByLangValues()); // Per-context autofill identity for the strongbox unlock // password (no per-wallet discriminator). - com.quantumcoinwallet.app.security.CredentialIdentifier.apply( + com.quantumcoin.app.security.CredentialIdentifier.apply( passwordEditText, - com.quantumcoinwallet.app.security.CredentialIdentifier.Context.STRONGBOX_UNLOCK, + com.quantumcoin.app.security.CredentialIdentifier.Context.STRONGBOX_UNLOCK, null); // Inject an invisible username field carrying the // strongbox-scoped username so Google Password Manager / @@ -946,9 +946,9 @@ public boolean onKey(android.content.DialogInterface d, int keyCode, android.view.ViewGroup unlockRoot = (android.view.ViewGroup) dialog.findViewById(R.id.linear_layout_unlock_content); if (unlockRoot != null) { - com.quantumcoinwallet.app.security.CredentialIdentifier.attachUsernameField( + com.quantumcoin.app.security.CredentialIdentifier.attachUsernameField( unlockRoot, - com.quantumcoinwallet.app.security.CredentialIdentifier + com.quantumcoin.app.security.CredentialIdentifier .strongboxUsername(this)); } GlobalMethods.focusAndShowKeyboard(passwordEditText, dialog); @@ -965,7 +965,7 @@ public boolean onKey(android.content.DialogInterface d, int keyCode, // must complete the unlock to proceed. The wrapper hides // the close button and swallows the back key so the // semantics live in exactly one place. - com.quantumcoinwallet.app.view.dialog.UnlockDialogs.applyMandatory(dialog, true); + com.quantumcoin.app.view.dialog.UnlockDialogs.applyMandatory(dialog, true); unlockButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { @@ -981,7 +981,7 @@ public void onClick(View v) { unlockButton.setText("..."); final String trimmedPassword = password.trim(); - final AlertDialog waitDlg = com.quantumcoinwallet.app.view.dialog.WaitDialog + final AlertDialog waitDlg = com.quantumcoin.app.view.dialog.WaitDialog .show(HomeActivity.this, jsonViewModel.getWaitUnlockByLangValues()); new Thread(new Runnable() { public void run() { @@ -995,11 +995,11 @@ public void run() { // path which calls // UnlockAttemptLimiter.currentDecision() // before scrypt. - com.quantumcoinwallet.app.security.UnlockAttemptLimiter.Decision lim = - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter.Decision lim = + com.quantumcoin.app.security.UnlockAttemptLimiter .currentDecision(getApplicationContext()); - if (lim.kind == com.quantumcoinwallet.app.security.UnlockAttemptLimiter.DecisionKind.LOCKED) { - final String message = com.quantumcoinwallet.app.security + if (lim.kind == com.quantumcoin.app.security.UnlockAttemptLimiter.DecisionKind.LOCKED) { + final String message = com.quantumcoin.app.security .UnlockAttemptLimiter.userFacingLockoutMessage(lim.remainingSeconds, jsonViewModel); runOnUiThread(new Runnable() { public void run() { @@ -1018,9 +1018,9 @@ public void run() { boolean unlocked = secureStorage.unlock( getApplicationContext(), trimmedPassword); if (!unlocked) { - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter .recordFailure(getApplicationContext(), - com.quantumcoinwallet.app.security + com.quantumcoin.app.security .UnlockAttemptLimiter.Channel.STRONGBOX_UNLOCK); runOnUiThread(new Runnable() { public void run() { @@ -1035,9 +1035,9 @@ public void run() { }); return; } - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter .recordSuccess(getApplicationContext(), - com.quantumcoinwallet.app.security + com.quantumcoin.app.security .UnlockAttemptLimiter.Channel.STRONGBOX_UNLOCK); Map[] maps = secureStorage.buildWalletMaps( getApplicationContext()); @@ -1342,7 +1342,7 @@ public void onFinished(BalanceResponse balanceResponse) throws ServiceException } @Override - public void onFailure(com.quantumcoinwallet.app.api.read.ApiException e) { + public void onFailure(com.quantumcoin.app.api.read.ApiException e) { progressBar.setVisibility(View.GONE); int code = e.getCode(); @@ -1426,7 +1426,7 @@ public void onFinished(BalanceResponse balanceResponse) throws ServiceException } @Override - public void onFailure(com.quantumcoinwallet.app.api.read.ApiException e) { + public void onFailure(com.quantumcoin.app.api.read.ApiException e) { } }); @@ -1536,7 +1536,7 @@ public void run() { GlobalMethods.seedLoaded = true; return; } catch (Exception e) { - com.quantumcoinwallet.app.Logger.e(TAG, "loadSeedsThread failed, retrying in 1s", e); + com.quantumcoin.app.Logger.e(TAG, "loadSeedsThread failed, retrying in 1s", e); try { Thread.sleep(1000); } catch (InterruptedException ie) { diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/adapter/AccountPendingTransactionAdapter.java b/app/src/main/java/com/quantumcoin/app/view/adapter/AccountPendingTransactionAdapter.java similarity index 92% rename from app/src/main/java/com/quantumcoinwallet/app/view/adapter/AccountPendingTransactionAdapter.java rename to app/src/main/java/com/quantumcoin/app/view/adapter/AccountPendingTransactionAdapter.java index 225459a..ce4613d 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/adapter/AccountPendingTransactionAdapter.java +++ b/app/src/main/java/com/quantumcoin/app/view/adapter/AccountPendingTransactionAdapter.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.adapter; +package com.quantumcoin.app.view.adapter; import android.annotation.SuppressLint; import android.content.Context; @@ -13,11 +13,11 @@ import androidx.recyclerview.widget.RecyclerView.Adapter; import androidx.recyclerview.widget.RecyclerView.ViewHolder; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.api.read.model.AccountPendingTransactionSummary; -import com.quantumcoinwallet.app.utils.AccountTransactionUi; -import com.quantumcoinwallet.app.utils.CoinUtils; -import com.quantumcoinwallet.app.utils.GlobalMethods; +import com.quantumcoin.app.R; +import com.quantumcoin.app.api.read.model.AccountPendingTransactionSummary; +import com.quantumcoin.app.utils.AccountTransactionUi; +import com.quantumcoin.app.utils.CoinUtils; +import com.quantumcoin.app.utils.GlobalMethods; import java.math.BigInteger; import java.util.List; @@ -126,7 +126,7 @@ public void onClick(View v) { // Hash flows from a pending-tx scan API // response; UrlBuilder regex-validates before // any browser handoff. - Uri u = com.quantumcoinwallet.app.networking.UrlBuilder + Uri u = com.quantumcoin.app.networking.UrlBuilder .blockExplorerTxUrl(hash); if (u == null) return; context.startActivity(new Intent(Intent.ACTION_VIEW, u)); @@ -138,7 +138,7 @@ public void onClick(View v) { holder.textViewFrom.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Uri u = com.quantumcoinwallet.app.networking.UrlBuilder + Uri u = com.quantumcoin.app.networking.UrlBuilder .blockExplorerAccountUrl(from); if (u == null) return; context.startActivity(new Intent(Intent.ACTION_VIEW, u)); @@ -150,7 +150,7 @@ public void onClick(View v) { holder.textViewTo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Uri u = com.quantumcoinwallet.app.networking.UrlBuilder + Uri u = com.quantumcoin.app.networking.UrlBuilder .blockExplorerAccountUrl(to); if (u == null) return; context.startActivity(new Intent(Intent.ACTION_VIEW, u)); diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/adapter/AccountTransactionAdapter.java b/app/src/main/java/com/quantumcoin/app/view/adapter/AccountTransactionAdapter.java similarity index 93% rename from app/src/main/java/com/quantumcoinwallet/app/view/adapter/AccountTransactionAdapter.java rename to app/src/main/java/com/quantumcoin/app/view/adapter/AccountTransactionAdapter.java index 3561ca2..bd9d412 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/adapter/AccountTransactionAdapter.java +++ b/app/src/main/java/com/quantumcoin/app/view/adapter/AccountTransactionAdapter.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.adapter; +package com.quantumcoin.app.view.adapter; import android.annotation.SuppressLint; import android.content.Context; @@ -13,11 +13,11 @@ import androidx.recyclerview.widget.RecyclerView.Adapter; import androidx.recyclerview.widget.RecyclerView.ViewHolder; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.api.read.model.AccountTransactionSummary; -import com.quantumcoinwallet.app.utils.AccountTransactionUi; -import com.quantumcoinwallet.app.utils.CoinUtils; -import com.quantumcoinwallet.app.utils.GlobalMethods; +import com.quantumcoin.app.R; +import com.quantumcoin.app.api.read.model.AccountTransactionSummary; +import com.quantumcoin.app.utils.AccountTransactionUi; +import com.quantumcoin.app.utils.CoinUtils; +import com.quantumcoin.app.utils.GlobalMethods; import java.time.OffsetDateTime; import java.time.ZoneId; @@ -163,7 +163,7 @@ public void onClick(View v) { // Hash comes from scan-API JSON; gate // through UrlBuilder so a malformed value is // a no-op rather than an injection vector. - Uri u = com.quantumcoinwallet.app.networking.UrlBuilder + Uri u = com.quantumcoin.app.networking.UrlBuilder .blockExplorerTxUrl(hash); if (u == null) return; context.startActivity(new Intent(Intent.ACTION_VIEW, u)); @@ -175,7 +175,7 @@ public void onClick(View v) { holder.textViewFrom.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Uri u = com.quantumcoinwallet.app.networking.UrlBuilder + Uri u = com.quantumcoin.app.networking.UrlBuilder .blockExplorerAccountUrl(from); if (u == null) return; context.startActivity(new Intent(Intent.ACTION_VIEW, u)); @@ -187,7 +187,7 @@ public void onClick(View v) { holder.textViewTo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Uri u = com.quantumcoinwallet.app.networking.UrlBuilder + Uri u = com.quantumcoin.app.networking.UrlBuilder .blockExplorerAccountUrl(to); if (u == null) return; context.startActivity(new Intent(Intent.ACTION_VIEW, u)); diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/adapter/BlockchainNetworkAdapter.java b/app/src/main/java/com/quantumcoin/app/view/adapter/BlockchainNetworkAdapter.java similarity index 94% rename from app/src/main/java/com/quantumcoinwallet/app/view/adapter/BlockchainNetworkAdapter.java rename to app/src/main/java/com/quantumcoin/app/view/adapter/BlockchainNetworkAdapter.java index 6c523a5..e1d9ec8 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/adapter/BlockchainNetworkAdapter.java +++ b/app/src/main/java/com/quantumcoin/app/view/adapter/BlockchainNetworkAdapter.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.adapter; +package com.quantumcoin.app.view.adapter; import android.annotation.SuppressLint; import android.content.Context; @@ -10,9 +10,9 @@ import androidx.recyclerview.widget.RecyclerView.Adapter; import androidx.recyclerview.widget.RecyclerView.ViewHolder; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.model.BlockchainNetwork; -import com.quantumcoinwallet.app.utils.GlobalMethods; +import com.quantumcoin.app.R; +import com.quantumcoin.app.model.BlockchainNetwork; +import com.quantumcoin.app.utils.GlobalMethods; import java.util.List; import java.util.Map; diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/adapter/SeedWordAutoCompleteAdapter.java b/app/src/main/java/com/quantumcoin/app/view/adapter/SeedWordAutoCompleteAdapter.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/view/adapter/SeedWordAutoCompleteAdapter.java rename to app/src/main/java/com/quantumcoin/app/view/adapter/SeedWordAutoCompleteAdapter.java index 0e98fd8..964e36e 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/adapter/SeedWordAutoCompleteAdapter.java +++ b/app/src/main/java/com/quantumcoin/app/view/adapter/SeedWordAutoCompleteAdapter.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.adapter; +package com.quantumcoin.app.view.adapter; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/adapter/TokenAdapter.java b/app/src/main/java/com/quantumcoin/app/view/adapter/TokenAdapter.java similarity index 92% rename from app/src/main/java/com/quantumcoinwallet/app/view/adapter/TokenAdapter.java rename to app/src/main/java/com/quantumcoin/app/view/adapter/TokenAdapter.java index 45e86b3..5fc6c4a 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/adapter/TokenAdapter.java +++ b/app/src/main/java/com/quantumcoin/app/view/adapter/TokenAdapter.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.adapter; +package com.quantumcoin.app.view.adapter; import android.annotation.SuppressLint; import android.content.Context; @@ -11,10 +11,10 @@ import androidx.recyclerview.widget.RecyclerView; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.api.read.model.AccountTokenSummary; -import com.quantumcoinwallet.app.utils.CoinUtils; -import com.quantumcoinwallet.app.utils.GlobalMethods; +import com.quantumcoin.app.R; +import com.quantumcoin.app.api.read.model.AccountTokenSummary; +import com.quantumcoin.app.utils.CoinUtils; +import com.quantumcoin.app.utils.GlobalMethods; import java.util.ArrayList; import java.util.List; @@ -84,7 +84,7 @@ public void onClick(View v) { // controls. UrlBuilder rejects anything not // matching ^0x[0-9a-fA-F]{64}$ rather than // pivoting Chrome to an attacker URL. - Uri u = com.quantumcoinwallet.app.networking.UrlBuilder + Uri u = com.quantumcoin.app.networking.UrlBuilder .blockExplorerAccountUrl(contract); if (u == null) return; context.startActivity(new Intent(Intent.ACTION_VIEW, u)); diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/adapter/WalletAdapter.java b/app/src/main/java/com/quantumcoin/app/view/adapter/WalletAdapter.java similarity index 93% rename from app/src/main/java/com/quantumcoinwallet/app/view/adapter/WalletAdapter.java rename to app/src/main/java/com/quantumcoin/app/view/adapter/WalletAdapter.java index 831092e..0f6fbd2 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/adapter/WalletAdapter.java +++ b/app/src/main/java/com/quantumcoin/app/view/adapter/WalletAdapter.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.adapter; +package com.quantumcoin.app.view.adapter; import android.annotation.SuppressLint; import android.content.Context; @@ -13,10 +13,10 @@ import androidx.recyclerview.widget.RecyclerView.Adapter; import androidx.recyclerview.widget.RecyclerView.ViewHolder; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.api.read.model.AccountTransactionSummary; -import com.quantumcoinwallet.app.utils.GlobalMethods; -import com.quantumcoinwallet.app.viewmodel.KeyViewModel; +import com.quantumcoin.app.R; +import com.quantumcoin.app.api.read.model.AccountTransactionSummary; +import com.quantumcoin.app.utils.GlobalMethods; +import com.quantumcoin.app.viewmodel.KeyViewModel; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; @@ -97,7 +97,7 @@ public void onClick(View v) { public void onClick(View v) { // Validate + percent-encode the address // before letting the system browser see it. - Uri u = com.quantumcoinwallet.app.networking.UrlBuilder + Uri u = com.quantumcoin.app.networking.UrlBuilder .blockExplorerAccountUrl(address); if (u == null) return; context.startActivity(new Intent(Intent.ACTION_VIEW, u)); @@ -112,7 +112,7 @@ public void onClick(View v) { }); String indexKey = String.valueOf(position); - Boolean hasSeedBoxed = com.quantumcoinwallet.app.utils.PrefConnect + Boolean hasSeedBoxed = com.quantumcoin.app.utils.PrefConnect .WALLET_INDEX_HAS_SEED_MAP.get(indexKey); // Default to false on a missing map entry: every // create/restore path that produces a seed pushes diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/dialog/BackupPasswordDialog.java b/app/src/main/java/com/quantumcoin/app/view/dialog/BackupPasswordDialog.java similarity index 92% rename from app/src/main/java/com/quantumcoinwallet/app/view/dialog/BackupPasswordDialog.java rename to app/src/main/java/com/quantumcoin/app/view/dialog/BackupPasswordDialog.java index 8c5ad38..2e6216c 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/dialog/BackupPasswordDialog.java +++ b/app/src/main/java/com/quantumcoin/app/view/dialog/BackupPasswordDialog.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.dialog; +package com.quantumcoin.app.view.dialog; import android.app.AlertDialog; import android.content.Context; @@ -15,9 +15,9 @@ import com.google.android.material.textfield.TextInputEditText; import com.google.android.material.textfield.TextInputLayout; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.utils.GlobalMethods; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.R; +import com.quantumcoin.app.utils.GlobalMethods; +import com.quantumcoin.app.viewmodel.JsonViewModel; /** * Reusable dialog asking the user for a backup password. @@ -168,8 +168,8 @@ private static void showCreateMode(final Context ctx, final JsonViewModel vm, // / Samsung Pass / 1Password on submit. Mirrors iOS // BackupPasswordDialog.create(address) which uses // .newPassword. - com.quantumcoinwallet.app.security.CredentialIdentifier.apply(pwd, - com.quantumcoinwallet.app.security.CredentialIdentifier.Context.BACKUP_ENCRYPT, + com.quantumcoin.app.security.CredentialIdentifier.apply(pwd, + com.quantumcoin.app.security.CredentialIdentifier.Context.BACKUP_ENCRYPT, address, /*forCreation=*/true); pwdLayout.addView(pwd); root.addView(pwdLayout); @@ -189,8 +189,8 @@ private static void showCreateMode(final Context ctx, final JsonViewModel vm, confirm.setBackground(null); // Same per-context identity as `pwd` so the manager fills BOTH // fields with the same generated password. - com.quantumcoinwallet.app.security.CredentialIdentifier.apply(confirm, - com.quantumcoinwallet.app.security.CredentialIdentifier.Context.BACKUP_ENCRYPT, + com.quantumcoin.app.security.CredentialIdentifier.apply(confirm, + com.quantumcoin.app.security.CredentialIdentifier.Context.BACKUP_ENCRYPT, address, /*forCreation=*/true); confirmLayout.addView(confirm); root.addView(confirmLayout); @@ -204,11 +204,11 @@ private static void showCreateMode(final Context ctx, final JsonViewModel vm, // or `UsernameField.make(CredentialIdentifier.backupBatchUsername)` // depending on the call site. String createUsername = address == null - ? com.quantumcoinwallet.app.security.CredentialIdentifier + ? com.quantumcoin.app.security.CredentialIdentifier .backupBatchUsername(ctx) - : com.quantumcoinwallet.app.security.CredentialIdentifier + : com.quantumcoin.app.security.CredentialIdentifier .backupUsername(ctx, address); - com.quantumcoinwallet.app.security.CredentialIdentifier + com.quantumcoin.app.security.CredentialIdentifier .attachUsernameField(root, createUsername); final AlertDialog dialog = new AlertDialog.Builder(ctx) @@ -302,8 +302,8 @@ public static void showRestore(final Context ctx, final JsonViewModel vm, // DECRYPT context: a password manager should suggest the // user's existing backup password rather than offering to // generate a fresh one. - com.quantumcoinwallet.app.security.CredentialIdentifier.apply(pwd, - com.quantumcoinwallet.app.security.CredentialIdentifier.Context.BACKUP_DECRYPT, + com.quantumcoin.app.security.CredentialIdentifier.apply(pwd, + com.quantumcoin.app.security.CredentialIdentifier.Context.BACKUP_DECRYPT, address, /*forCreation=*/false); pwdLayout.addView(pwd); root.addView(pwdLayout); @@ -311,11 +311,11 @@ public static void showRestore(final Context ctx, final JsonViewModel vm, // Per-wallet (or batch when address unknown) username so the // autofill provider scopes its suggestion to the right slot. String restoreUsername = address == null - ? com.quantumcoinwallet.app.security.CredentialIdentifier + ? com.quantumcoin.app.security.CredentialIdentifier .backupBatchUsername(ctx) - : com.quantumcoinwallet.app.security.CredentialIdentifier + : com.quantumcoin.app.security.CredentialIdentifier .backupUsername(ctx, address); - com.quantumcoinwallet.app.security.CredentialIdentifier + com.quantumcoin.app.security.CredentialIdentifier .attachUsernameField(root, restoreUsername); final AlertDialog dialog = new AlertDialog.Builder(ctx) @@ -363,14 +363,14 @@ public void onFailure() { // does not get N extra attempts by alternating // channels. Mirrors iOS UnlockAttemptLimiter usage // in the backup-restore flow. - com.quantumcoinwallet.app.security.UnlockAttemptLimiter.Decision lim = - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter.Decision lim = + com.quantumcoin.app.security.UnlockAttemptLimiter .currentDecision(ctx); - if (lim.kind == com.quantumcoinwallet.app.security + if (lim.kind == com.quantumcoin.app.security .UnlockAttemptLimiter.DecisionKind.LOCKED) { GlobalMethods.ShowErrorDialog(ctx, safe(vm.getErrorTitleByLangValues(), "Error"), - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter .userFacingLockoutMessage(lim.remainingSeconds, vm)); return; } @@ -460,8 +460,8 @@ public static void showRestoreBatch(final Context ctx, final JsonViewModel vm, // generate a fresh one. Batch mode has no per-wallet // discriminator (one typed password may decrypt one of many // wallets) so the username falls back to the batch slot. - com.quantumcoinwallet.app.security.CredentialIdentifier.apply(pwd, - com.quantumcoinwallet.app.security.CredentialIdentifier.Context.BACKUP_DECRYPT, + com.quantumcoin.app.security.CredentialIdentifier.apply(pwd, + com.quantumcoin.app.security.CredentialIdentifier.Context.BACKUP_DECRYPT, null, /*forCreation=*/false); pwdLayout.addView(pwd); root.addView(pwdLayout); @@ -470,9 +470,9 @@ public static void showRestoreBatch(final Context ctx, final JsonViewModel vm, // backupUsername so a batch-mode autofill query never // collides with a per-wallet slot. iOS counterpart is // `UsernameField.make(CredentialIdentifier.backupBatchUsername)`. - com.quantumcoinwallet.app.security.CredentialIdentifier + com.quantumcoin.app.security.CredentialIdentifier .attachUsernameField(root, - com.quantumcoinwallet.app.security.CredentialIdentifier + com.quantumcoin.app.security.CredentialIdentifier .backupBatchUsername(ctx)); final AlertDialog dialog = new AlertDialog.Builder(ctx) @@ -519,14 +519,14 @@ public void reEnable() { return; } // Brute-force gate (see showRestore for rationale). - com.quantumcoinwallet.app.security.UnlockAttemptLimiter.Decision lim = - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter.Decision lim = + com.quantumcoin.app.security.UnlockAttemptLimiter .currentDecision(ctx); - if (lim.kind == com.quantumcoinwallet.app.security + if (lim.kind == com.quantumcoin.app.security .UnlockAttemptLimiter.DecisionKind.LOCKED) { GlobalMethods.ShowErrorDialog(ctx, safe(vm.getErrorTitleByLangValues(), "Error"), - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter .userFacingLockoutMessage(lim.remainingSeconds, vm)); return; } diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/dialog/TransactionReviewDialog.java b/app/src/main/java/com/quantumcoin/app/view/dialog/TransactionReviewDialog.java similarity index 96% rename from app/src/main/java/com/quantumcoinwallet/app/view/dialog/TransactionReviewDialog.java rename to app/src/main/java/com/quantumcoin/app/view/dialog/TransactionReviewDialog.java index 09dc6ba..3e9a60f 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/dialog/TransactionReviewDialog.java +++ b/app/src/main/java/com/quantumcoin/app/view/dialog/TransactionReviewDialog.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.dialog; +package com.quantumcoin.app.view.dialog; import android.content.Context; import android.graphics.Color; @@ -20,8 +20,8 @@ import androidx.appcompat.app.AlertDialog; -import com.quantumcoinwallet.app.utils.GlobalMethods; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.utils.GlobalMethods; +import com.quantumcoin.app.viewmodel.JsonViewModel; import java.util.Locale; @@ -112,7 +112,7 @@ public static AlertDialog show(final Context ctx, // used by the unlock + network-select dialogs so the visual // language stays consistent and theme-portable (light/dark). root.setBackgroundResource( - com.quantumcoinwallet.app.R.drawable.center_container); + com.quantumcoin.app.R.drawable.center_container); scroll.addView(root, new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); @@ -221,7 +221,7 @@ public static AlertDialog show(final Context ctx, int btnH = dp(ctx, 43); int btnPad = dp(ctx, 5); int textColor = androidx.core.content.ContextCompat.getColor( - ctx, com.quantumcoinwallet.app.R.color.colorCommon7); + ctx, com.quantumcoin.app.R.color.colorCommon7); Button cancel = new Button(ctx); cancel.setText(safe(vm.getCancelByLangValues(), "Cancel")); @@ -229,7 +229,7 @@ public static AlertDialog show(final Context ctx, cancel.setTextColor(textColor); cancel.setPadding(btnPad, btnPad, btnPad, btnPad); cancel.setBackgroundResource( - com.quantumcoinwallet.app.R.drawable.button_network_cancel_selector); + com.quantumcoin.app.R.drawable.button_network_cancel_selector); Button ok = new Button(ctx); ok.setText(safe(vm.getOkByLangValues(), "OK")); @@ -237,7 +237,7 @@ public static AlertDialog show(final Context ctx, ok.setTextColor(textColor); ok.setPadding(btnPad, btnPad, btnPad, btnPad); ok.setBackgroundResource( - com.quantumcoinwallet.app.R.drawable.button_green_selector); + com.quantumcoin.app.R.drawable.button_green_selector); LinearLayout.LayoutParams cancelLp = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, btnH); diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/dialog/UnlockDialogs.java b/app/src/main/java/com/quantumcoin/app/view/dialog/UnlockDialogs.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/view/dialog/UnlockDialogs.java rename to app/src/main/java/com/quantumcoin/app/view/dialog/UnlockDialogs.java index 1abf5a2..953ef89 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/dialog/UnlockDialogs.java +++ b/app/src/main/java/com/quantumcoin/app/view/dialog/UnlockDialogs.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.dialog; +package com.quantumcoin.app.view.dialog; import android.content.DialogInterface; import android.view.KeyEvent; @@ -9,7 +9,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; -import com.quantumcoinwallet.app.R; +import com.quantumcoin.app.R; /** * Helper: thin wrapper around the inline unlock diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/dialog/WaitDialog.java b/app/src/main/java/com/quantumcoin/app/view/dialog/WaitDialog.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/view/dialog/WaitDialog.java rename to app/src/main/java/com/quantumcoin/app/view/dialog/WaitDialog.java index 19b6aaa..050c605 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/dialog/WaitDialog.java +++ b/app/src/main/java/com/quantumcoin/app/view/dialog/WaitDialog.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.dialog; +package com.quantumcoin.app.view.dialog; import android.content.Context; import android.graphics.Color; @@ -12,7 +12,7 @@ import androidx.appcompat.app.AlertDialog; import androidx.core.content.ContextCompat; -import com.quantumcoinwallet.app.R; +import com.quantumcoin.app.R; /** * Non-cancelable wait dialog used during long scrypt-based encrypt/decrypt operations. diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/AccountTransactionsFragment.java b/app/src/main/java/com/quantumcoin/app/view/fragment/AccountTransactionsFragment.java similarity index 96% rename from app/src/main/java/com/quantumcoinwallet/app/view/fragment/AccountTransactionsFragment.java rename to app/src/main/java/com/quantumcoin/app/view/fragment/AccountTransactionsFragment.java index c753dca..ab67539 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/AccountTransactionsFragment.java +++ b/app/src/main/java/com/quantumcoin/app/view/fragment/AccountTransactionsFragment.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.fragment; +package com.quantumcoin.app.view.fragment; import android.content.Context; import android.graphics.Typeface; @@ -20,18 +20,18 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.asynctask.read.AccountPendingTxnRestTask; -import com.quantumcoinwallet.app.asynctask.read.AccountTxnRestTask; -import com.quantumcoinwallet.app.utils.GlobalMethods; -import com.quantumcoinwallet.app.api.read.model.AccountTransactionSummary; -import com.quantumcoinwallet.app.api.read.model.AccountTransactionSummaryResponse; -import com.quantumcoinwallet.app.api.read.model.AccountPendingTransactionSummary; -import com.quantumcoinwallet.app.api.read.model.AccountPendingTransactionSummaryResponse; -import com.quantumcoinwallet.app.view.adapter.AccountPendingTransactionAdapter; -import com.quantumcoinwallet.app.view.adapter.AccountTransactionAdapter; -import com.quantumcoinwallet.app.view.widget.VerticalScrollIndicatorView; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.R; +import com.quantumcoin.app.asynctask.read.AccountPendingTxnRestTask; +import com.quantumcoin.app.asynctask.read.AccountTxnRestTask; +import com.quantumcoin.app.utils.GlobalMethods; +import com.quantumcoin.app.api.read.model.AccountTransactionSummary; +import com.quantumcoin.app.api.read.model.AccountTransactionSummaryResponse; +import com.quantumcoin.app.api.read.model.AccountPendingTransactionSummary; +import com.quantumcoin.app.api.read.model.AccountPendingTransactionSummaryResponse; +import com.quantumcoin.app.view.adapter.AccountPendingTransactionAdapter; +import com.quantumcoin.app.view.adapter.AccountTransactionAdapter; +import com.quantumcoin.app.view.widget.VerticalScrollIndicatorView; +import com.quantumcoin.app.viewmodel.JsonViewModel; import com.google.android.material.button.MaterialButton; import com.google.android.material.button.MaterialButtonToggleGroup; @@ -434,7 +434,7 @@ public void onFinished(AccountTransactionSummaryResponse accountTransactionSumma } @Override - public void onFailure(com.quantumcoinwallet.app.api.read.ApiException e) { + public void onFailure(com.quantumcoin.app.api.read.ApiException e) { progressBar.setVisibility(View.GONE); int code = e.getCode(); if (code == 404 || code == 204) { @@ -525,7 +525,7 @@ public void onFinished(AccountPendingTransactionSummaryResponse accountPendingTr } @Override - public void onFailure(com.quantumcoinwallet.app.api.read.ApiException e) { + public void onFailure(com.quantumcoin.app.api.read.ApiException e) { progressBar.setVisibility(View.GONE); int code = e.getCode(); if (code == 404 || code == 204) { diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/BackupOptionsFragment.java b/app/src/main/java/com/quantumcoin/app/view/fragment/BackupOptionsFragment.java similarity index 94% rename from app/src/main/java/com/quantumcoinwallet/app/view/fragment/BackupOptionsFragment.java rename to app/src/main/java/com/quantumcoin/app/view/fragment/BackupOptionsFragment.java index 25f1baf..ac4f9e7 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/BackupOptionsFragment.java +++ b/app/src/main/java/com/quantumcoin/app/view/fragment/BackupOptionsFragment.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.fragment; +package com.quantumcoin.app.view.fragment; import android.content.Context; import android.os.Bundle; @@ -13,8 +13,8 @@ import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.R; +import com.quantumcoin.app.viewmodel.JsonViewModel; /** * Backup-options surface shown when the user taps the per-row backup @@ -25,7 +25,7 @@ * buttons. * *

The actual cloud/file export logic runs INSIDE this fragment via - * {@link com.quantumcoinwallet.app.backup.BackupExecutor} so a successful + * {@link com.quantumcoin.app.backup.BackupExecutor} so a successful * backup leaves the user on this screen — they can immediately tap the * second option (cloud after file or vice versa) without having to * re-navigate. Mirrors iOS {@code BackupOptionsViewController.swift}, @@ -36,7 +36,7 @@ public class BackupOptionsFragment extends Fragment { /** HomeActivity-only callback — back-arrow restores the wallets * list. Cloud/file flows complete inside this fragment via - * {@link com.quantumcoinwallet.app.backup.BackupExecutor}; they + * {@link com.quantumcoin.app.backup.BackupExecutor}; they * intentionally do NOT bubble through this listener so the user * stays on the backup screen after a successful backup. */ public interface OnBackupOptionsCompleteListener { @@ -57,7 +57,7 @@ public interface OnBackupOptionsCompleteListener { private JsonViewModel jsonViewModel; private String walletAddress; private String walletPassword; - private com.quantumcoinwallet.app.backup.BackupExecutor backupExecutor; + private com.quantumcoin.app.backup.BackupExecutor backupExecutor; public BackupOptionsFragment() { } @@ -94,7 +94,7 @@ public void onCreate(@Nullable Bundle savedInstanceState) { // onStart(); construct here in onCreate so both the cloud // folder picker and the file create-document picker are wired // by the time the user can tap the buttons. - backupExecutor = new com.quantumcoinwallet.app.backup.BackupExecutor( + backupExecutor = new com.quantumcoin.app.backup.BackupExecutor( this, jsonViewModel); } diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/BlockchainNetworkAddFragment.java b/app/src/main/java/com/quantumcoin/app/view/fragment/BlockchainNetworkAddFragment.java similarity index 96% rename from app/src/main/java/com/quantumcoinwallet/app/view/fragment/BlockchainNetworkAddFragment.java rename to app/src/main/java/com/quantumcoin/app/view/fragment/BlockchainNetworkAddFragment.java index 549dafc..6667fd8 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/BlockchainNetworkAddFragment.java +++ b/app/src/main/java/com/quantumcoin/app/view/fragment/BlockchainNetworkAddFragment.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.fragment; +package com.quantumcoin.app.view.fragment; import android.content.Context; import android.os.Bundle; @@ -11,13 +11,13 @@ import android.widget.TextView; import androidx.fragment.app.Fragment; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.keystorage.SecureStorage; -import com.quantumcoinwallet.app.model.BlockchainNetwork; -import com.quantumcoinwallet.app.utils.GlobalMethods; -import com.quantumcoinwallet.app.utils.NetworkPersistence; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; -import com.quantumcoinwallet.app.viewmodel.KeyViewModel; +import com.quantumcoin.app.R; +import com.quantumcoin.app.keystorage.SecureStorage; +import com.quantumcoin.app.model.BlockchainNetwork; +import com.quantumcoin.app.utils.GlobalMethods; +import com.quantumcoin.app.utils.NetworkPersistence; +import com.quantumcoin.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.viewmodel.KeyViewModel; import org.json.JSONObject; import java.util.regex.Pattern; @@ -292,7 +292,7 @@ public void onAttach(Context context) { * mainKey field was removed; see UnlockCoordinator class header). * If the session is already unlocked we use * {@link UnlockCoordinator#verifyPassword} for the same outcome - * as {@link com.quantumcoinwallet.app.keystorage.SecureStorage#unlock} + * as {@link com.quantumcoin.app.keystorage.SecureStorage#unlock} * without re-running the migration side effects. Mirrors iOS * {@code promptUnlockThenAddNetwork} which collects the password * via {@code UnlockDialogViewController} before re-encrypting. @@ -341,9 +341,9 @@ private void persistAddedNetworkOrPromptUnlock( pwd.setHint(vm.getEnterApasswordByLangValues()); unlockBtn.setText(vm.getUnlockByLangValues()); closeBtn.setText(vm.getCloseByLangValues()); - com.quantumcoinwallet.app.security.CredentialIdentifier.apply( + com.quantumcoin.app.security.CredentialIdentifier.apply( pwd, - com.quantumcoinwallet.app.security.CredentialIdentifier.Context.STRONGBOX_UNLOCK, + com.quantumcoin.app.security.CredentialIdentifier.Context.STRONGBOX_UNLOCK, null); // Match the unlock-site pattern used in HomeActivity / // WalletsFragment / SendFragment so password managers @@ -357,9 +357,9 @@ private void persistAddedNetworkOrPromptUnlock( ViewGroup unlockRoot = (ViewGroup) dialog.findViewById(R.id.linear_layout_unlock_content); if (unlockRoot != null) { - com.quantumcoinwallet.app.security.CredentialIdentifier.attachUsernameField( + com.quantumcoin.app.security.CredentialIdentifier.attachUsernameField( unlockRoot, - com.quantumcoinwallet.app.security.CredentialIdentifier + com.quantumcoin.app.security.CredentialIdentifier .strongboxUsername(getContext())); } GlobalMethods.focusAndShowKeyboard(pwd, dialog); @@ -368,7 +368,7 @@ private void persistAddedNetworkOrPromptUnlock( // the close button visible. UnlockDialogs.applyMandatory // false matches the WalletsFragment unlock semantics. try { - com.quantumcoinwallet.app.view.dialog.UnlockDialogs + com.quantumcoin.app.view.dialog.UnlockDialogs .applyMandatory(dialog, false); } catch (Throwable ignore) { } @@ -399,7 +399,7 @@ public void onClick(View v) { waitMessage = "Please wait..."; } final androidx.appcompat.app.AlertDialog waitDlg = - com.quantumcoinwallet.app.view.dialog.WaitDialog + com.quantumcoin.app.view.dialog.WaitDialog .show(getContext(), waitMessage); new Thread(new Runnable() { @Override @@ -511,7 +511,7 @@ public void run() { GlobalMethods.ExceptionError(getContext(), TAG, finalFailure); return; } - com.quantumcoinwallet.app.events.NetworkChangeBroadcaster + com.quantumcoin.app.events.NetworkChangeBroadcaster .broadcastNetworkListChanged(getContext()); GlobalMethods.ShowMessageDialog(getContext(), null, errorOrFallback(vm.getNetworkAddSuccessByErrors(), diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/BlockchainNetworkDialogFragment.java b/app/src/main/java/com/quantumcoin/app/view/fragment/BlockchainNetworkDialogFragment.java similarity index 90% rename from app/src/main/java/com/quantumcoinwallet/app/view/fragment/BlockchainNetworkDialogFragment.java rename to app/src/main/java/com/quantumcoin/app/view/fragment/BlockchainNetworkDialogFragment.java index 85f03a5..55e5f22 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/BlockchainNetworkDialogFragment.java +++ b/app/src/main/java/com/quantumcoin/app/view/fragment/BlockchainNetworkDialogFragment.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.fragment; +package com.quantumcoin.app.view.fragment; import android.annotation.SuppressLint; import android.content.Context; @@ -14,11 +14,11 @@ import androidx.fragment.app.DialogFragment; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.model.BlockchainNetwork; -import com.quantumcoinwallet.app.utils.GlobalMethods; -import com.quantumcoinwallet.app.utils.PrefConnect; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.R; +import com.quantumcoin.app.model.BlockchainNetwork; +import com.quantumcoin.app.utils.GlobalMethods; +import com.quantumcoin.app.utils.PrefConnect; +import com.quantumcoin.app.viewmodel.JsonViewModel; import org.json.JSONException; @@ -184,7 +184,7 @@ public void onStop(){ /** * Prompt the user for their wallet password, then persist the * new active-network index into the strongbox via - * {@link com.quantumcoinwallet.app.utils.NetworkPersistence#writeActiveIndex}. + * {@link com.quantumcoin.app.utils.NetworkPersistence#writeActiveIndex}. * The persist runs on a background thread (scrypt is on the hot * path); UI dispatches happen back on the main thread. Mirrors * iOS {@code promptUnlockThenSetActive} behaviour where the @@ -192,17 +192,17 @@ public void onStop(){ * with the new active-index. */ private void promptUnlockAndPersistActiveIndex(final int targetIndex, - final com.quantumcoinwallet.app.viewmodel.JsonViewModel vm) { - final com.quantumcoinwallet.app.keystorage.SecureStorage secureStorage = - com.quantumcoinwallet.app.viewmodel.KeyViewModel.getSecureStorage(); + final com.quantumcoin.app.viewmodel.JsonViewModel vm) { + final com.quantumcoin.app.keystorage.SecureStorage secureStorage = + com.quantumcoin.app.viewmodel.KeyViewModel.getSecureStorage(); if (secureStorage == null) { // No strongbox available — fall back to legacy prefs so // the user's selection is at least remembered locally. - com.quantumcoinwallet.app.utils.PrefConnect.writeInteger(getContext(), - com.quantumcoinwallet.app.utils.PrefConnect.BLOCKCHAIN_NETWORK_ID_INDEX_KEY, + com.quantumcoin.app.utils.PrefConnect.writeInteger(getContext(), + com.quantumcoin.app.utils.PrefConnect.BLOCKCHAIN_NETWORK_ID_INDEX_KEY, targetIndex); try { getDialog().dismiss(); } catch (Throwable ignore) { } - com.quantumcoinwallet.app.events.NetworkChangeBroadcaster + com.quantumcoin.app.events.NetworkChangeBroadcaster .broadcastActiveNetworkChanged(getContext()); mBlockchainNetworkDialogListener.onBlockchainNetworkDialogOk(); return; @@ -238,21 +238,21 @@ private void promptUnlockAndPersistActiveIndex(final int targetIndex, unlockBtn.setText(vm.getUnlockByLangValues()); closeBtn.setText(vm.getCloseByLangValues()); - com.quantumcoinwallet.app.security.CredentialIdentifier.apply( + com.quantumcoin.app.security.CredentialIdentifier.apply( pwd, - com.quantumcoinwallet.app.security.CredentialIdentifier.Context.STRONGBOX_UNLOCK, + com.quantumcoin.app.security.CredentialIdentifier.Context.STRONGBOX_UNLOCK, null); ViewGroup unlockRoot = (ViewGroup) dialog.findViewById(R.id.linear_layout_unlock_content); if (unlockRoot != null) { - com.quantumcoinwallet.app.security.CredentialIdentifier.attachUsernameField( + com.quantumcoin.app.security.CredentialIdentifier.attachUsernameField( unlockRoot, - com.quantumcoinwallet.app.security.CredentialIdentifier + com.quantumcoin.app.security.CredentialIdentifier .strongboxUsername(getContext())); } - com.quantumcoinwallet.app.utils.GlobalMethods.focusAndShowKeyboard(pwd, dialog); + com.quantumcoin.app.utils.GlobalMethods.focusAndShowKeyboard(pwd, dialog); try { - com.quantumcoinwallet.app.view.dialog.UnlockDialogs + com.quantumcoin.app.view.dialog.UnlockDialogs .applyMandatory(dialog, false); } catch (Throwable ignore) { } @@ -261,7 +261,7 @@ private void promptUnlockAndPersistActiveIndex(final int targetIndex, public void onClick(View v) { final String password = pwd.getText() == null ? "" : pwd.getText().toString(); if (password.isEmpty()) { - com.quantumcoinwallet.app.utils.GlobalMethods + com.quantumcoin.app.utils.GlobalMethods .ShowErrorDialog(getContext(), errorTitle, vm.getEnterApasswordByLangValues()); return; @@ -280,7 +280,7 @@ public void onClick(View v) { // re-derive mainKey via scrypt) so there is exactly // one continuous spinner from tap to completion. final androidx.appcompat.app.AlertDialog waitDlg = - com.quantumcoinwallet.app.view.dialog.WaitDialog + com.quantumcoin.app.view.dialog.WaitDialog .show(getContext(), vm.getWaitUnlockByLangValues()); new Thread(new Runnable() { @Override @@ -305,7 +305,7 @@ public void run() { // failure so a one-character typo // is easy to fix. Mirrors SendFragment. pwd.requestFocus(); - com.quantumcoinwallet.app.utils.GlobalMethods + com.quantumcoin.app.utils.GlobalMethods .ShowErrorDialog(getContext(), errorTitle, vm.getWalletPasswordMismatchByErrors()); } @@ -319,7 +319,7 @@ public void run() { // so the user sees one continuous spinner. Exception failure = null; try { - com.quantumcoinwallet.app.utils.NetworkPersistence + com.quantumcoin.app.utils.NetworkPersistence .writeActiveIndex(getContext(), secureStorage, targetIndex, password); } catch (Exception e) { @@ -335,13 +335,13 @@ public void run() { unlockBtn.setEnabled(true); closeBtn.setEnabled(true); pwd.setEnabled(true); - com.quantumcoinwallet.app.utils.GlobalMethods + com.quantumcoin.app.utils.GlobalMethods .ExceptionError(getContext(), TAG, finalFailure); return; } try { dialog.dismiss(); } catch (Throwable ignore) { } try { getDialog().dismiss(); } catch (Throwable ignore) { } - com.quantumcoinwallet.app.events.NetworkChangeBroadcaster + com.quantumcoin.app.events.NetworkChangeBroadcaster .broadcastActiveNetworkChanged(getContext()); mBlockchainNetworkDialogListener.onBlockchainNetworkDialogOk(); } diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/BlockchainNetworkFragment.java b/app/src/main/java/com/quantumcoin/app/view/fragment/BlockchainNetworkFragment.java similarity index 95% rename from app/src/main/java/com/quantumcoinwallet/app/view/fragment/BlockchainNetworkFragment.java rename to app/src/main/java/com/quantumcoin/app/view/fragment/BlockchainNetworkFragment.java index bfb3290..a2ccf35 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/BlockchainNetworkFragment.java +++ b/app/src/main/java/com/quantumcoin/app/view/fragment/BlockchainNetworkFragment.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.fragment; +package com.quantumcoin.app.view.fragment; import android.content.Context; import android.graphics.Typeface; @@ -15,10 +15,10 @@ import androidx.fragment.app.Fragment; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.model.BlockchainNetwork; -import com.quantumcoinwallet.app.utils.GlobalMethods; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.R; +import com.quantumcoin.app.model.BlockchainNetwork; +import com.quantumcoin.app.utils.GlobalMethods; +import com.quantumcoin.app.viewmodel.JsonViewModel; import java.util.List; diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/HomeMainFragment.java b/app/src/main/java/com/quantumcoin/app/view/fragment/HomeMainFragment.java similarity index 96% rename from app/src/main/java/com/quantumcoinwallet/app/view/fragment/HomeMainFragment.java rename to app/src/main/java/com/quantumcoin/app/view/fragment/HomeMainFragment.java index 8fa33db..c0028f0 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/HomeMainFragment.java +++ b/app/src/main/java/com/quantumcoin/app/view/fragment/HomeMainFragment.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.fragment; +package com.quantumcoin.app.view.fragment; import android.content.Context; import android.os.Bundle; @@ -16,15 +16,15 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.api.read.ApiException; -import com.quantumcoinwallet.app.api.read.model.AccountTokenListResponse; -import com.quantumcoinwallet.app.api.read.model.AccountTokenSummary; -import com.quantumcoinwallet.app.asynctask.read.ListAccountTokensRestTask; -import com.quantumcoinwallet.app.utils.GlobalMethods; -import com.quantumcoinwallet.app.view.adapter.TokenAdapter; -import com.quantumcoinwallet.app.view.widget.VerticalScrollIndicatorView; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.R; +import com.quantumcoin.app.api.read.ApiException; +import com.quantumcoin.app.api.read.model.AccountTokenListResponse; +import com.quantumcoin.app.api.read.model.AccountTokenSummary; +import com.quantumcoin.app.asynctask.read.ListAccountTokensRestTask; +import com.quantumcoin.app.utils.GlobalMethods; +import com.quantumcoin.app.view.adapter.TokenAdapter; +import com.quantumcoin.app.view.widget.VerticalScrollIndicatorView; +import com.quantumcoin.app.viewmodel.JsonViewModel; import java.util.ArrayList; import java.util.List; @@ -227,11 +227,11 @@ private void renderEmptyState(boolean empty) { */ private void applyFilteredItems(List items) { List filtered = - com.quantumcoinwallet.app.tokens.StablecoinImpersonatorFilter.filter(items); + com.quantumcoin.app.tokens.StablecoinImpersonatorFilter.filter(items); recognizedTokens = new ArrayList<>(); unrecognizedTokens = new ArrayList<>(); for (AccountTokenSummary t : filtered) { - if (com.quantumcoinwallet.app.tokens.RecognizedTokens + if (com.quantumcoin.app.tokens.RecognizedTokens .isRecognized(t == null ? null : t.getContractAddress())) { recognizedTokens.add(t); } else { @@ -446,7 +446,7 @@ public void onReceive(android.content.Context context, android.content.Intent in refreshTokenList(walletAddress); } }; - com.quantumcoinwallet.app.events.NetworkChangeBroadcaster + com.quantumcoin.app.events.NetworkChangeBroadcaster .registerAll(getContext(), networkChangeReceiver); } } @@ -455,7 +455,7 @@ public void onReceive(android.content.Context context, android.content.Intent in public void onPause() { super.onPause(); if (networkChangeReceiver != null && getContext() != null) { - com.quantumcoinwallet.app.events.NetworkChangeBroadcaster + com.quantumcoin.app.events.NetworkChangeBroadcaster .unregister(getContext(), networkChangeReceiver); networkChangeReceiver = null; } diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/HomeStartFragment.java b/app/src/main/java/com/quantumcoin/app/view/fragment/HomeStartFragment.java similarity index 98% rename from app/src/main/java/com/quantumcoinwallet/app/view/fragment/HomeStartFragment.java rename to app/src/main/java/com/quantumcoin/app/view/fragment/HomeStartFragment.java index 1873e52..5820d80 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/HomeStartFragment.java +++ b/app/src/main/java/com/quantumcoin/app/view/fragment/HomeStartFragment.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.fragment; +package com.quantumcoin.app.view.fragment; import android.content.Context; import android.os.Bundle; @@ -15,9 +15,9 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.utils.GlobalMethods; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.R; +import com.quantumcoin.app.utils.GlobalMethods; +import com.quantumcoin.app.viewmodel.JsonViewModel; import timber.log.Timber; diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/HomeWalletFragment.java b/app/src/main/java/com/quantumcoin/app/view/fragment/HomeWalletFragment.java similarity index 95% rename from app/src/main/java/com/quantumcoinwallet/app/view/fragment/HomeWalletFragment.java rename to app/src/main/java/com/quantumcoin/app/view/fragment/HomeWalletFragment.java index 57adc50..7762eda 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/HomeWalletFragment.java +++ b/app/src/main/java/com/quantumcoin/app/view/fragment/HomeWalletFragment.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.fragment; +package com.quantumcoin.app.view.fragment; import static android.content.Context.CLIPBOARD_SERVICE; import static androidx.core.content.ContextCompat.getSystemService; @@ -42,17 +42,17 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.api.read.ApiException; -import com.quantumcoinwallet.app.api.read.model.BalanceResponse; -import com.quantumcoinwallet.app.asynctask.read.AccountBalanceRestTask; -import com.quantumcoinwallet.app.entity.ServiceException; -import com.quantumcoinwallet.app.keystorage.SecureStorage; -import com.quantumcoinwallet.app.utils.CoinUtils; -import com.quantumcoinwallet.app.utils.GlobalMethods; -import com.quantumcoinwallet.app.utils.PrefConnect; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; -import com.quantumcoinwallet.app.viewmodel.KeyViewModel; +import com.quantumcoin.app.R; +import com.quantumcoin.app.api.read.ApiException; +import com.quantumcoin.app.api.read.model.BalanceResponse; +import com.quantumcoin.app.asynctask.read.AccountBalanceRestTask; +import com.quantumcoin.app.entity.ServiceException; +import com.quantumcoin.app.keystorage.SecureStorage; +import com.quantumcoin.app.utils.CoinUtils; +import com.quantumcoin.app.utils.GlobalMethods; +import com.quantumcoin.app.utils.PrefConnect; +import com.quantumcoin.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.viewmodel.KeyViewModel; import org.json.JSONArray; import org.json.JSONObject; @@ -62,7 +62,7 @@ import java.util.List; import java.util.Objects; -import com.quantumcoinwallet.app.view.adapter.SeedWordAutoCompleteAdapter; +import com.quantumcoin.app.view.adapter.SeedWordAutoCompleteAdapter; public class HomeWalletFragment extends Fragment { @@ -158,7 +158,7 @@ public class HomeWalletFragment extends Fragment { * fresher fetch had already cleared it, which manifests to the * user as "the refresh keeps spinning". UI-thread only. */ - private com.quantumcoinwallet.app.asynctask.read.AccountBalanceRestTask + private com.quantumcoin.app.asynctask.read.AccountBalanceRestTask confirmWalletBalanceTask; private String tempPrivateKeyBase64; private String tempPublicKeyBase64; @@ -254,7 +254,7 @@ public boolean handleBackPressed() { // (strongbox initialized => not first-time). boolean firstTime = true; try { - firstTime = !com.quantumcoinwallet.app.viewmodel.KeyViewModel + firstTime = !com.quantumcoin.app.viewmodel.KeyViewModel .getSecureStorage().isInitialized(getContext()); } catch (Throwable ignore) { } @@ -420,7 +420,7 @@ public void run() { } }); } catch (final Exception e) { - com.quantumcoinwallet.app.Logger.e(TAG, "backup export failed", e); + com.quantumcoin.app.Logger.e(TAG, "backup export failed", e); getActivity().runOnUiThread(new Runnable() { @Override public void run() { @@ -444,8 +444,8 @@ public void run() { private void markActivityUnlocked() { try { android.app.Activity act = getActivity(); - if (act instanceof com.quantumcoinwallet.app.view.activities.HomeActivity) { - ((com.quantumcoinwallet.app.view.activities.HomeActivity) act).markUnlockedNow(); + if (act instanceof com.quantumcoin.app.view.activities.HomeActivity) { + ((com.quantumcoin.app.view.activities.HomeActivity) act).markUnlockedNow(); } } catch (Exception ignore) { } } @@ -453,8 +453,8 @@ private void markActivityUnlocked() { private void setSuppressNextResumeLock(boolean suppress) { try { android.app.Activity act = getActivity(); - if (act instanceof com.quantumcoinwallet.app.view.activities.HomeActivity) { - ((com.quantumcoinwallet.app.view.activities.HomeActivity) act).setSuppressNextResumeLock(suppress); + if (act instanceof com.quantumcoin.app.view.activities.HomeActivity) { + ((com.quantumcoin.app.view.activities.HomeActivity) act).setSuppressNextResumeLock(suppress); } } catch (Exception ignore) { } } @@ -895,7 +895,7 @@ public void run() { // ClipData with android.content.extra.IS_SENSITIVE. See // RevealWalletFragment for the full rationale; the same // policy applies here on the new-wallet seed-display screen. - boolean homeSeedCopyAvailable = com.quantumcoinwallet.app.utils.SecureClipboard + boolean homeSeedCopyAvailable = com.quantumcoin.app.utils.SecureClipboard .isSeedClipboardCopyHardened(); View.OnClickListener homeCopyClickListener = new View.OnClickListener() { @@ -903,7 +903,7 @@ public void run() { public void onClick(View v) { progressBar.setVisibility(View.VISIBLE); String clipboardCopyData = ClipboardCopyData(homeSeedWordsViewCaptionTextViews, homeSeedWordsViewTextViews); - com.quantumcoinwallet.app.utils.SecureClipboard.copySensitive( + com.quantumcoin.app.utils.SecureClipboard.copySensitive( getActivity(), "walletSeed", clipboardCopyData); progressBar.setVisibility(View.GONE); homeSeedWordsViewCopied.setVisibility(View.VISIBLE); @@ -1121,13 +1121,13 @@ private void SetWalletView(TextView setWalletTitleTextView, TextView setWalletDe // the system "Save Password?" sheet on submit. Both fields // share the same STRONGBOX_UNLOCK identity so the manager // fills BOTH with the same generated password. - com.quantumcoinwallet.app.security.CredentialIdentifier.apply( + com.quantumcoin.app.security.CredentialIdentifier.apply( setWalletPasswordEditText, - com.quantumcoinwallet.app.security.CredentialIdentifier.Context.STRONGBOX_UNLOCK, + com.quantumcoin.app.security.CredentialIdentifier.Context.STRONGBOX_UNLOCK, null, /*forCreation=*/true); - com.quantumcoinwallet.app.security.CredentialIdentifier.apply( + com.quantumcoin.app.security.CredentialIdentifier.apply( setWalletRetypePasswordEditText, - com.quantumcoinwallet.app.security.CredentialIdentifier.Context.STRONGBOX_UNLOCK, + com.quantumcoin.app.security.CredentialIdentifier.Context.STRONGBOX_UNLOCK, null, /*forCreation=*/true); // Inject an invisible username EditText carrying the // strongbox-scoped username so a password manager scopes the @@ -1138,9 +1138,9 @@ private void SetWalletView(TextView setWalletTitleTextView, TextView setWalletDe android.view.ViewGroup container = (android.view.ViewGroup) root.findViewById(R.id.linear_layout_home_set_wallet); if (container != null) { - com.quantumcoinwallet.app.security.CredentialIdentifier.attachUsernameField( + com.quantumcoin.app.security.CredentialIdentifier.attachUsernameField( container, - com.quantumcoinwallet.app.security.CredentialIdentifier + com.quantumcoin.app.security.CredentialIdentifier .strongboxUsername(getContext())); } } @@ -1486,7 +1486,7 @@ public void onClick(View v) { if (homeConfirmWalletAddressValueTextView == null) return; String addr = homeConfirmWalletAddressValueTextView.getText().toString(); if (addr.isEmpty()) return; - com.quantumcoinwallet.app.utils.SecureClipboard.copyAddress( + com.quantumcoin.app.utils.SecureClipboard.copyAddress( getActivity(), "confirmWalletAddress", addr); if (copiedToast != null) { copiedToast.setVisibility(View.VISIBLE); @@ -1512,7 +1512,7 @@ public void onClick(View v) { String addr = homeConfirmWalletAddressValueTextView.getText().toString(); // Regex-validated + percent-encoded URL // construction. Returns null on invalid input. - Uri u = com.quantumcoinwallet.app.networking.UrlBuilder + Uri u = com.quantumcoin.app.networking.UrlBuilder .blockExplorerAccountUrl(addr); if (u == null) return; try { @@ -1607,7 +1607,7 @@ public void onClick(View v) { return; } - final AlertDialog waitDlg = com.quantumcoinwallet.app.view.dialog.WaitDialog + final AlertDialog waitDlg = com.quantumcoin.app.view.dialog.WaitDialog .show(getContext(), jsonViewModel.getWaitWalletOpenByLangValues()); // Posting to the main looper directly (rather than routing // through the host activity's UI-thread executor) means the @@ -1845,7 +1845,7 @@ public void onClick(View v) { String addr = homeConfirmWalletAddressValueTextView.getText() == null ? "" : homeConfirmWalletAddressValueTextView.getText().toString(); if (addr.isEmpty()) return; - com.quantumcoinwallet.app.utils.SecureClipboard.copyAddress( + com.quantumcoin.app.utils.SecureClipboard.copyAddress( getActivity(), "confirmWalletAddress", addr); final TextView toast = getView() == null ? null : (TextView) getView().findViewById(R.id.textView_home_confirm_wallet_copied); @@ -1926,7 +1926,7 @@ private void saveWalletFromSeedWords(final String[] seedWords, final ProgressBar resetConfirmWalletSaveGuard(); return; } - final AlertDialog waitDlg = com.quantumcoinwallet.app.view.dialog.WaitDialog + final AlertDialog waitDlg = com.quantumcoin.app.view.dialog.WaitDialog .show(getContext(), jsonViewModel.getWaitWalletSaveByLangValues()); new Thread(new Runnable() { public void run() { @@ -2039,7 +2039,7 @@ public void run() { *

Behavior mirrors the unlock+verify pattern used by * {@code BlockchainNetworkAddFragment.persistAddedNetworkOrPromptUnlock} * and {@code BlockchainNetworkDialogFragment.promptUnlockAndPersistActiveIndex}: - * a foreground {@link com.quantumcoinwallet.app.view.dialog.WaitDialog} + * a foreground {@link com.quantumcoin.app.view.dialog.WaitDialog} * appears the instant the user taps Unlock so the user sees a * spinner across the scrypt-bound verify, then the dialog * dismisses and {@code saveWalletFromSeedWords} re-enters with @@ -2092,16 +2092,16 @@ private void promptStrongboxPasswordForSave(final String[] seedWords, unlockBtn.setText(jsonViewModel.getUnlockByLangValues()); closeBtn.setText(jsonViewModel.getCloseByLangValues()); - com.quantumcoinwallet.app.security.CredentialIdentifier.apply( + com.quantumcoin.app.security.CredentialIdentifier.apply( pwd, - com.quantumcoinwallet.app.security.CredentialIdentifier.Context.STRONGBOX_UNLOCK, + com.quantumcoin.app.security.CredentialIdentifier.Context.STRONGBOX_UNLOCK, null); android.view.ViewGroup unlockRoot = (android.view.ViewGroup) dialog.findViewById(R.id.linear_layout_unlock_content); if (unlockRoot != null) { - com.quantumcoinwallet.app.security.CredentialIdentifier.attachUsernameField( + com.quantumcoin.app.security.CredentialIdentifier.attachUsernameField( unlockRoot, - com.quantumcoinwallet.app.security.CredentialIdentifier + com.quantumcoin.app.security.CredentialIdentifier .strongboxUsername(ctx)); } GlobalMethods.focusAndShowKeyboard(pwd, dialog); @@ -2109,7 +2109,7 @@ private void promptStrongboxPasswordForSave(final String[] seedWords, // wallet bytes have not been touched yet — so the // close-button stays enabled. try { - com.quantumcoinwallet.app.view.dialog.UnlockDialogs + com.quantumcoin.app.view.dialog.UnlockDialogs .applyMandatory(dialog, false); } catch (Throwable ignore) { } @@ -2128,7 +2128,7 @@ public void onClick(View v) { closeBtn.setEnabled(false); pwd.setEnabled(false); final androidx.appcompat.app.AlertDialog waitDlg = - com.quantumcoinwallet.app.view.dialog.WaitDialog + com.quantumcoin.app.view.dialog.WaitDialog .show(ctx, jsonViewModel.getWaitUnlockByLangValues()); new Thread(new Runnable() { @Override @@ -2394,7 +2394,7 @@ private void writeEncryptedToSafFolder(final String encryptedJson, final String @Override public void run() { try { - String filename = com.quantumcoinwallet.app.backup.CloudBackupManager.buildFilename(address); + String filename = com.quantumcoin.app.backup.CloudBackupManager.buildFilename(address); // Use the verified write path so we get a // BackupWriteOutcome that distinguishes (a) cloud // vs local destination and (b) verify-by-readback @@ -2402,10 +2402,10 @@ public void run() { // differ: a cloud destination is "submitted" (may // not yet be visible from another device until the // provider syncs); a local destination is "saved". - final com.quantumcoinwallet.app.backup.CloudBackupManager.BackupWriteOutcome outcome = - com.quantumcoinwallet.app.backup.CloudBackupManager.writeToSafFolderVerified( + final com.quantumcoin.app.backup.CloudBackupManager.BackupWriteOutcome outcome = + com.quantumcoin.app.backup.CloudBackupManager.writeToSafFolderVerified( getContext(), Uri.parse(folderUriStr), filename, encryptedJson); - if (outcome.kind == com.quantumcoinwallet.app.backup.CloudBackupManager.BackupWriteKind.VERIFY_FAILED) { + if (outcome.kind == com.quantumcoin.app.backup.CloudBackupManager.BackupWriteKind.VERIFY_FAILED) { throw new java.io.IOException("verify-by-readback failed: " + (outcome.detail == null ? "unknown" : outcome.detail)); } @@ -2417,7 +2417,7 @@ public void run() { // dialog so the user knows the bytes // haven't necessarily reached the cloud // backend yet. iOS shows the same modal. - if (outcome.kind == com.quantumcoinwallet.app.backup.CloudBackupManager.BackupWriteKind.SUBMITTED_CLOUD) { + if (outcome.kind == com.quantumcoin.app.backup.CloudBackupManager.BackupWriteKind.SUBMITTED_CLOUD) { String title = jsonViewModel.getBackupSubmittedTitleByLangValues(); String body = jsonViewModel.getBackupSubmittedBodyByLangValues(); if (title == null || title.isEmpty()) title = "Backup submitted"; @@ -2431,7 +2431,7 @@ public void run() { } }); } catch (final Exception e) { - com.quantumcoinwallet.app.Logger.e(TAG, "cloud backup write failed", e); + com.quantumcoin.app.Logger.e(TAG, "cloud backup write failed", e); getActivity().runOnUiThread(new Runnable() { public void run() { String tmpl = jsonViewModel.getBackupFailedByLangValues(); @@ -2461,9 +2461,9 @@ public void onReady(String encryptedJson, String address) { setSuppressNextResumeLock(true); Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); - intent.setType(com.quantumcoinwallet.app.backup.CloudBackupManager.BACKUP_MIME_TYPE); + intent.setType(com.quantumcoin.app.backup.CloudBackupManager.BACKUP_MIME_TYPE); intent.putExtra(Intent.EXTRA_TITLE, - com.quantumcoinwallet.app.backup.CloudBackupManager.buildFilename(address)); + com.quantumcoin.app.backup.CloudBackupManager.buildFilename(address)); fileBackupLauncher.launch(intent); } catch (Exception e) { setSuppressNextResumeLock(false); @@ -2484,9 +2484,9 @@ private interface EncryptedReady { } private void BackupPasswordDialogShow(final BackupPasswordReceiver receiver) { - com.quantumcoinwallet.app.view.dialog.BackupPasswordDialog.show( + com.quantumcoin.app.view.dialog.BackupPasswordDialog.show( getContext(), jsonViewModel, - new com.quantumcoinwallet.app.view.dialog.BackupPasswordDialog.OnBackupPasswordListener() { + new com.quantumcoin.app.view.dialog.BackupPasswordDialog.OnBackupPasswordListener() { @Override public void onPasswordSelected(String password) { receiver.onPassword(password); @@ -2497,14 +2497,14 @@ public void onCanceled() { } } private void encryptWalletForBackup(final String backupPassword, final EncryptedReady onReady) { - final AlertDialog waitDlg = com.quantumcoinwallet.app.view.dialog.WaitDialog + final AlertDialog waitDlg = com.quantumcoin.app.view.dialog.WaitDialog .show(getContext(), jsonViewModel.getWaitWalletSaveByLangValues()); new Thread(new Runnable() { @Override public void run() { try { - final com.quantumcoinwallet.app.backup.CloudBackupManager.EncryptedResult enc = - com.quantumcoinwallet.app.backup.CloudBackupManager + final com.quantumcoin.app.backup.CloudBackupManager.EncryptedResult enc = + com.quantumcoin.app.backup.CloudBackupManager .encryptWallet(pendingBackupWalletJson, backupPassword); getActivity().runOnUiThread(new Runnable() { public void run() { @@ -2513,7 +2513,7 @@ public void run() { } }); } catch (final Exception e) { - com.quantumcoinwallet.app.Logger.e(TAG, "encryptWalletForBackup failed", e); + com.quantumcoin.app.Logger.e(TAG, "encryptWalletForBackup failed", e); getActivity().runOnUiThread(new Runnable() { public void run() { if (waitDlg != null) try { waitDlg.dismiss(); } catch (Throwable ignore) { } @@ -2551,8 +2551,8 @@ private void flagFileBackupSaved() { private void finishBackupAndNavigateToHome() { final String indexKey = walletIndexKey; android.app.Activity act = getActivity(); - if (act instanceof com.quantumcoinwallet.app.view.activities.HomeActivity) { - ((com.quantumcoinwallet.app.view.activities.HomeActivity) act) + if (act instanceof com.quantumcoin.app.view.activities.HomeActivity) { + ((com.quantumcoin.app.view.activities.HomeActivity) act) .requirePasswordReentryThenNavigate(new Runnable() { @Override public void run() { @@ -2679,7 +2679,7 @@ private void startRestoreFromFileFlow() { setSuppressNextResumeLock(true); Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); - intent.setType(com.quantumcoinwallet.app.backup.CloudBackupManager.BACKUP_MIME_TYPE); + intent.setType(com.quantumcoin.app.backup.CloudBackupManager.BACKUP_MIME_TYPE); restoreFilePickerLauncher.launch(intent); } catch (Exception e) { setSuppressNextResumeLock(false); @@ -2742,10 +2742,10 @@ public void run() { // "showing first N of M" / "skipped K oversized" // when the per-folder caps fire instead of silently // dropping older or oversized backups. - final com.quantumcoinwallet.app.backup.CloudBackupManager.ScanOutcome scan = - com.quantumcoinwallet.app.backup.CloudBackupManager + final com.quantumcoin.app.backup.CloudBackupManager.ScanOutcome scan = + com.quantumcoin.app.backup.CloudBackupManager .scanQualifyingBackupsWithOutcome(ctx, folderUri); - final List candidates = + final List candidates = scan.candidates; if (getActivity() == null) return; getActivity().runOnUiThread(new Runnable() { @@ -2774,12 +2774,12 @@ public void run() { } firstRestoredIndexKey = null; clearPendingStrongboxPassword(); - final List pending = + final List pending = new ArrayList<>(); final List restored = new ArrayList<>(); final List alreadyExists = new ArrayList<>(); final List skipped = new ArrayList<>(); - for (com.quantumcoinwallet.app.backup.CloudBackupManager.BackupCandidate c : candidates) { + for (com.quantumcoin.app.backup.CloudBackupManager.BackupCandidate c : candidates) { if (c.address != null && PrefConnect.WALLET_ADDRESS_TO_INDEX_MAP != null && PrefConnect.WALLET_ADDRESS_TO_INDEX_MAP.containsKey(c.address)) { @@ -2811,7 +2811,7 @@ public void run() { // User canceled the strongbox-unlock prompt: treat all // pending candidates as skipped and surface the summary // (consistent with `BackupPasswordDialog.onCanceled`). - for (com.quantumcoinwallet.app.backup.CloudBackupManager.BackupCandidate c : pending) { + for (com.quantumcoin.app.backup.CloudBackupManager.BackupCandidate c : pending) { skipped.add(c.address); } pending.clear(); @@ -2832,7 +2832,7 @@ public void run() { * same dialog with a different password. Cancel moves the remaining pending * addresses into {@code skipped} and goes straight to the summary. */ private void runBatchedRestorePass( - final List pending, + final List pending, final List restored, final List alreadyExists, final List skipped) { @@ -2844,20 +2844,20 @@ private void runBatchedRestorePass( return; } final List remainingAddresses = new ArrayList<>(); - for (com.quantumcoinwallet.app.backup.CloudBackupManager.BackupCandidate c : pending) { + for (com.quantumcoin.app.backup.CloudBackupManager.BackupCandidate c : pending) { remainingAddresses.add(c.address); } - com.quantumcoinwallet.app.view.dialog.BackupPasswordDialog.showRestoreBatch( + com.quantumcoin.app.view.dialog.BackupPasswordDialog.showRestoreBatch( getContext(), jsonViewModel, remainingAddresses, - new com.quantumcoinwallet.app.view.dialog.BackupPasswordDialog.OnBatchPasswordListener() { + new com.quantumcoin.app.view.dialog.BackupPasswordDialog.OnBatchPasswordListener() { @Override public void onPassword(String password, - com.quantumcoinwallet.app.view.dialog.BackupPasswordDialog.BatchDialogControl control) { + com.quantumcoin.app.view.dialog.BackupPasswordDialog.BatchDialogControl control) { attemptBatchDecrypt(pending, restored, alreadyExists, skipped, password, control); } @Override public void onCanceled() { - for (com.quantumcoinwallet.app.backup.CloudBackupManager.BackupCandidate c : pending) { + for (com.quantumcoin.app.backup.CloudBackupManager.BackupCandidate c : pending) { skipped.add(c.address); } pending.clear(); @@ -2875,9 +2875,9 @@ public void onCanceled() { *

The dialog is shown unconditionally — even when the * strongbox is already unlocked — because the per-file BACKUP * password (collected later in - * {@link com.quantumcoinwallet.app.view.dialog.BackupPasswordDialog}) + * {@link com.quantumcoin.app.view.dialog.BackupPasswordDialog}) * can legitimately differ from the device's strongbox - * password (see {@link com.quantumcoinwallet.app.backup.BackupExecutor} + * password (see {@link com.quantumcoin.app.backup.BackupExecutor} * which lets the user pick any backup password at export time). * Falling back to "use the backup password as the strongbox * password when unlocked" produced a silent failure: every file @@ -2945,16 +2945,16 @@ private void showStrongboxRestoreUnlockDialog(@NonNull final SecureStorage secur .findViewById(R.id.textView_unlock_langValues_enter_wallet_password); final EditText passwordEditText = (EditText) dialog .findViewById(R.id.editText_unlock_langValues_enter_a_password); - com.quantumcoinwallet.app.security.CredentialIdentifier.apply( + com.quantumcoin.app.security.CredentialIdentifier.apply( passwordEditText, - com.quantumcoinwallet.app.security.CredentialIdentifier.Context.STRONGBOX_UNLOCK, + com.quantumcoin.app.security.CredentialIdentifier.Context.STRONGBOX_UNLOCK, null); android.view.ViewGroup unlockRoot = (android.view.ViewGroup) dialog.findViewById(R.id.linear_layout_unlock_content); if (unlockRoot != null) { - com.quantumcoinwallet.app.security.CredentialIdentifier.attachUsernameField( + com.quantumcoin.app.security.CredentialIdentifier.attachUsernameField( unlockRoot, - com.quantumcoinwallet.app.security.CredentialIdentifier + com.quantumcoin.app.security.CredentialIdentifier .strongboxUsername(ctx)); } final Button unlockButton = (Button) dialog @@ -2970,7 +2970,7 @@ private void showStrongboxRestoreUnlockDialog(@NonNull final SecureStorage secur closeButton.setText(jsonViewModel.getCloseByLangValues()); // The strongbox unlock for restore is OPTIONAL — the user may // legitimately back out before any backup file has been touched. - com.quantumcoinwallet.app.view.dialog.UnlockDialogs.applyMandatory( + com.quantumcoin.app.view.dialog.UnlockDialogs.applyMandatory( dialog, false); unlockButton.setOnClickListener(new View.OnClickListener() { @Override @@ -3003,7 +3003,7 @@ public void onClick(View v) { } /** Background-thread strongbox unlock/create for the restore prompt. - * Honors {@link com.quantumcoinwallet.app.security.UnlockAttemptLimiter} + * Honors {@link com.quantumcoin.app.security.UnlockAttemptLimiter} * brute-force gating so the restore path cannot be used to brute-force * the strongbox password without backoff. */ private void runStrongboxRestoreUnlock( @@ -3020,8 +3020,8 @@ private void runStrongboxRestoreUnlock( onCancel.run(); return; } - final com.quantumcoinwallet.app.view.dialog.WaitDialog.Handle waitHandle = - com.quantumcoinwallet.app.view.dialog.WaitDialog.showWithDetails( + final com.quantumcoin.app.view.dialog.WaitDialog.Handle waitHandle = + com.quantumcoin.app.view.dialog.WaitDialog.showWithDetails( ctx, jsonViewModel.getWaitUnlockByLangValues()); new Thread(new Runnable() { @Override @@ -3029,19 +3029,19 @@ public void run() { boolean success = false; String lockoutMessage = null; try { - com.quantumcoinwallet.app.security.UnlockAttemptLimiter.Decision lim = - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter.Decision lim = + com.quantumcoin.app.security.UnlockAttemptLimiter .currentDecision(ctx); - if (lim.kind == com.quantumcoinwallet.app.security + if (lim.kind == com.quantumcoin.app.security .UnlockAttemptLimiter.DecisionKind.LOCKED) { - lockoutMessage = com.quantumcoinwallet.app.security + lockoutMessage = com.quantumcoin.app.security .UnlockAttemptLimiter.userFacingLockoutMessage(lim.remainingSeconds, jsonViewModel); } else if (!secureStorage.isInitialized(ctx)) { secureStorage.createMainKey(ctx, password); success = true; - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter .recordSuccess(ctx, - com.quantumcoinwallet.app.security + com.quantumcoin.app.security .UnlockAttemptLimiter.Channel.STRONGBOX_UNLOCK); } else if (secureStorage.isUnlocked()) { // Strongbox already unlocked from an earlier @@ -3052,32 +3052,32 @@ public void run() { // — this is a brute-force-sensitive surface. success = secureStorage.verifyPassword(ctx, password); if (success) { - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter .recordSuccess(ctx, - com.quantumcoinwallet.app.security + com.quantumcoin.app.security .UnlockAttemptLimiter.Channel.STRONGBOX_UNLOCK); } else { - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter .recordFailure(ctx, - com.quantumcoinwallet.app.security + com.quantumcoin.app.security .UnlockAttemptLimiter.Channel.STRONGBOX_UNLOCK); } } else { success = secureStorage.unlock(ctx, password); if (success) { - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter .recordSuccess(ctx, - com.quantumcoinwallet.app.security + com.quantumcoin.app.security .UnlockAttemptLimiter.Channel.STRONGBOX_UNLOCK); } else { - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter .recordFailure(ctx, - com.quantumcoinwallet.app.security + com.quantumcoin.app.security .UnlockAttemptLimiter.Channel.STRONGBOX_UNLOCK); } } } catch (Exception e) { - com.quantumcoinwallet.app.Logger.e(TAG, "restore strongbox unlock failed", e); + com.quantumcoin.app.Logger.e(TAG, "restore strongbox unlock failed", e); } final boolean finalSuccess = success; final String finalLockoutMessage = lockoutMessage; @@ -3113,19 +3113,19 @@ public void run() { } private void attemptBatchDecrypt( - final List pending, + final List pending, final List restored, final List alreadyExists, final List skipped, final String password, - final com.quantumcoinwallet.app.view.dialog.BackupPasswordDialog.BatchDialogControl control) { + final com.quantumcoin.app.view.dialog.BackupPasswordDialog.BatchDialogControl control) { final Context ctx = getContext(); if (ctx == null) return; final int before = pending.size(); final int restoredBefore = restored.size(); final String overlayTitle = jsonViewModel.getRestoreWalletsDecryptingByLangValues(); - final com.quantumcoinwallet.app.view.dialog.WaitDialog.Handle overlay = - com.quantumcoinwallet.app.view.dialog.WaitDialog.showWithDetails( + final com.quantumcoin.app.view.dialog.WaitDialog.Handle overlay = + com.quantumcoin.app.view.dialog.WaitDialog.showWithDetails( ctx, overlayTitle == null ? "" : overlayTitle); final String progressTemplate = jsonViewModel.getRestoreProgressOfByLangValues(); // Holder for a fatal restore error (e.g. strongbox-write rejected @@ -3184,10 +3184,10 @@ public void run() { // BACKUP_DECRYPT channel was never incremented, // defeating the limiter on the restore path. int successfulDecryptsThisPass = 0; - Iterator it = + Iterator it = pending.iterator(); while (it.hasNext()) { - final com.quantumcoinwallet.app.backup.CloudBackupManager.BackupCandidate c = it.next(); + final com.quantumcoin.app.backup.CloudBackupManager.BackupCandidate c = it.next(); final int currentIndex = ++attemptIndex; if (getActivity() != null) { getActivity().runOnUiThread(new Runnable() { @@ -3217,16 +3217,16 @@ public void run() { // reclaim the bytes immediately. String cipher; try { - cipher = com.quantumcoinwallet.app.backup.CloudBackupManager + cipher = com.quantumcoin.app.backup.CloudBackupManager .loadEncryptedJson(getContext(), c); } catch (Exception readErr) { timber.log.Timber.w(readErr, "lazy load failed for %s", c.address); continue; } - com.quantumcoinwallet.app.backup.CloudBackupManager.DecryptedWallet dw; + com.quantumcoin.app.backup.CloudBackupManager.DecryptedWallet dw; try { - dw = com.quantumcoinwallet.app.backup.CloudBackupManager + dw = com.quantumcoin.app.backup.CloudBackupManager .decryptWallet(cipher, password); } catch (Exception decryptErr) { continue; @@ -3277,7 +3277,7 @@ public void run() { try { secureStorage.saveWallet(getContext(), newIndex, walletJson.toString(), strongboxWritePassword); - } catch (com.quantumcoinwallet.app.keystorage.WrongPasswordException wpe) { + } catch (com.quantumcoin.app.keystorage.WrongPasswordException wpe) { timber.log.Timber.e(wpe, "Restore strongbox-write rejected the cached " + "strongbox password (invariant violation)"); @@ -3312,14 +3312,14 @@ public void run() { // pass over an empty pending list against the user. if (before > 0) { if (successfulDecryptsThisPass > 0) { - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter .recordSuccess(getContext(), - com.quantumcoinwallet.app.security + com.quantumcoin.app.security .UnlockAttemptLimiter.Channel.BACKUP_DECRYPT); } else { - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter .recordFailure(getContext(), - com.quantumcoinwallet.app.security + com.quantumcoin.app.security .UnlockAttemptLimiter.Channel.BACKUP_DECRYPT); } } @@ -3361,7 +3361,7 @@ public void run() { // into skipped so the summary is // accurate, then close the password // dialog and show it. - for (com.quantumcoinwallet.app.backup + for (com.quantumcoin.app.backup .CloudBackupManager.BackupCandidate c2 : pending) { skipped.add(c2.address); @@ -3512,11 +3512,11 @@ private TableRow buildSummaryRow(Context ctx, String status, String address, int private void handleRestoreFromUri(final Uri fileUri) { final ProgressBar progressBar = (ProgressBar) getView().findViewById(R.id.progress_loader_home_wallet); - com.quantumcoinwallet.app.view.dialog.BackupPasswordDialog.showRestore(getContext(), jsonViewModel, - new com.quantumcoinwallet.app.view.dialog.BackupPasswordDialog.OnPasswordAttemptListener() { + com.quantumcoin.app.view.dialog.BackupPasswordDialog.showRestore(getContext(), jsonViewModel, + new com.quantumcoin.app.view.dialog.BackupPasswordDialog.OnPasswordAttemptListener() { @Override public void onAttempt(String password, - com.quantumcoinwallet.app.view.dialog.BackupPasswordDialog.PasswordDialogControl control) { + com.quantumcoin.app.view.dialog.BackupPasswordDialog.PasswordDialogControl control) { performRestoreFromUri(fileUri, password, progressBar, control); } @Override @@ -3526,17 +3526,17 @@ public void onCanceled() { } private void performRestoreFromUri(final Uri fileUri, final String backupPassword, final ProgressBar progressBar, - final com.quantumcoinwallet.app.view.dialog.BackupPasswordDialog.PasswordDialogControl control) { - final AlertDialog waitDlg = com.quantumcoinwallet.app.view.dialog.WaitDialog + final com.quantumcoin.app.view.dialog.BackupPasswordDialog.PasswordDialogControl control) { + final AlertDialog waitDlg = com.quantumcoin.app.view.dialog.WaitDialog .show(getContext(), jsonViewModel.getWaitWalletOpenByLangValues()); new Thread(new Runnable() { @Override public void run() { try { - String encryptedJson = com.quantumcoinwallet.app.backup.CloudBackupManager + String encryptedJson = com.quantumcoin.app.backup.CloudBackupManager .readSafFile(getContext(), fileUri); - final com.quantumcoinwallet.app.backup.CloudBackupManager.DecryptedWallet dw = - com.quantumcoinwallet.app.backup.CloudBackupManager + final com.quantumcoin.app.backup.CloudBackupManager.DecryptedWallet dw = + com.quantumcoin.app.backup.CloudBackupManager .decryptWallet(encryptedJson, backupPassword); if (dw == null || dw.address == null) { throw new IllegalStateException("decrypt returned empty"); @@ -3597,9 +3597,9 @@ public void run() { // any stair-step counter accumulated by prior wrong // guesses on either the BACKUP_DECRYPT or the // STRONGBOX_UNLOCK channel (they share state). - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter .recordSuccess(getContext(), - com.quantumcoinwallet.app.security + com.quantumcoin.app.security .UnlockAttemptLimiter.Channel.BACKUP_DECRYPT); getActivity().runOnUiThread(new Runnable() { @@ -3613,7 +3613,7 @@ public void run() { } }); } catch (final Exception e) { - com.quantumcoinwallet.app.Logger.e(TAG, "Restore decrypt failed", e); + com.quantumcoin.app.Logger.e(TAG, "Restore decrypt failed", e); // Catch covers wrong-password (the dominant // failure mode here — the user-visible message // explicitly says "Enter a different password") as @@ -3626,9 +3626,9 @@ public void run() { // positives (e.g. disk-full storage failures) cost // the user one extra throttle increment, which the // limiter clears on the next successful unlock. - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter .recordFailure(getContext(), - com.quantumcoinwallet.app.security + com.quantumcoin.app.security .UnlockAttemptLimiter.Channel.BACKUP_DECRYPT); getActivity().runOnUiThread(new Runnable() { public void run() { diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/MessageInformationDialogFragment.java b/app/src/main/java/com/quantumcoin/app/view/fragment/MessageInformationDialogFragment.java similarity index 94% rename from app/src/main/java/com/quantumcoinwallet/app/view/fragment/MessageInformationDialogFragment.java rename to app/src/main/java/com/quantumcoin/app/view/fragment/MessageInformationDialogFragment.java index 80f1a14..d373485 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/MessageInformationDialogFragment.java +++ b/app/src/main/java/com/quantumcoin/app/view/fragment/MessageInformationDialogFragment.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.fragment; +package com.quantumcoin.app.view.fragment; import android.os.Bundle; import android.view.LayoutInflater; @@ -10,9 +10,9 @@ import androidx.fragment.app.DialogFragment; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.utils.GlobalMethods; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.R; +import com.quantumcoin.app.utils.GlobalMethods; +import com.quantumcoin.app.viewmodel.JsonViewModel; public class MessageInformationDialogFragment extends DialogFragment { diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/ReceiveFragment.java b/app/src/main/java/com/quantumcoin/app/view/fragment/ReceiveFragment.java similarity index 95% rename from app/src/main/java/com/quantumcoinwallet/app/view/fragment/ReceiveFragment.java rename to app/src/main/java/com/quantumcoin/app/view/fragment/ReceiveFragment.java index fe7620e..cbd547c 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/ReceiveFragment.java +++ b/app/src/main/java/com/quantumcoin/app/view/fragment/ReceiveFragment.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.fragment; +package com.quantumcoin.app.view.fragment; import android.content.Context; import android.graphics.Bitmap; @@ -13,10 +13,10 @@ import android.widget.TextView; import androidx.fragment.app.Fragment; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.utils.GlobalMethods; -import com.quantumcoinwallet.app.utils.Utility; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.R; +import com.quantumcoin.app.utils.GlobalMethods; +import com.quantumcoin.app.utils.Utility; +import com.quantumcoin.app.viewmodel.JsonViewModel; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.WriterException; @@ -93,7 +93,7 @@ public void onClick(View v) { // schedule a 30s auto-clear via copySensitive so the // value does not linger on the global clipboard for // hours. - com.quantumcoinwallet.app.utils.SecureClipboard.copySensitive( + com.quantumcoin.app.utils.SecureClipboard.copySensitive( getActivity(), "receiveAddress", receiveAddressTextView.getText()); receiveCopiedTextView.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/RevealWalletFragment.java b/app/src/main/java/com/quantumcoin/app/view/fragment/RevealWalletFragment.java similarity index 97% rename from app/src/main/java/com/quantumcoinwallet/app/view/fragment/RevealWalletFragment.java rename to app/src/main/java/com/quantumcoin/app/view/fragment/RevealWalletFragment.java index ece6ad5..d3272fa 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/RevealWalletFragment.java +++ b/app/src/main/java/com/quantumcoin/app/view/fragment/RevealWalletFragment.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.fragment; +package com.quantumcoin.app.view.fragment; import android.content.ClipData; import android.content.ClipboardManager; @@ -26,14 +26,14 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.entity.ServiceException; -import com.quantumcoinwallet.app.keystorage.SecureStorage; -import com.quantumcoinwallet.app.utils.GlobalMethods; -import com.quantumcoinwallet.app.utils.PrefConnect; -import com.quantumcoinwallet.app.view.adapter.SeedWordAutoCompleteAdapter; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; -import com.quantumcoinwallet.app.viewmodel.KeyViewModel; +import com.quantumcoin.app.R; +import com.quantumcoin.app.entity.ServiceException; +import com.quantumcoin.app.keystorage.SecureStorage; +import com.quantumcoin.app.utils.GlobalMethods; +import com.quantumcoin.app.utils.PrefConnect; +import com.quantumcoin.app.view.adapter.SeedWordAutoCompleteAdapter; +import com.quantumcoin.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.viewmodel.KeyViewModel; import org.json.JSONObject; @@ -139,7 +139,7 @@ public void onViewCreated(View view, Bundle savedInstanceState) { // wired up. iOS uses .localOnly + .expirationDate which gives // OS-level guarantees on every supported version, so this // gate has no iOS analogue. - boolean seedCopyAvailable = com.quantumcoinwallet.app.utils.SecureClipboard + boolean seedCopyAvailable = com.quantumcoin.app.utils.SecureClipboard .isSeedClipboardCopyHardened(); if (!seedCopyAvailable) { if (revealSeedWordsViewCopyClipboardImageButton != null) { @@ -185,7 +185,7 @@ public void run() { public void onClick(View v) { progressBar.setVisibility(View.VISIBLE); String clipboardCopyData = ClipboardCopyData(revealSeedWordsViewCaptionTextViews, revealSeedWordsViewTextViews); - com.quantumcoinwallet.app.utils.SecureClipboard.copySensitive( + com.quantumcoin.app.utils.SecureClipboard.copySensitive( getActivity(), "walletrevealSeed", clipboardCopyData); progressBar.setVisibility(View.GONE); revealSeedWordsViewCopied.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/SendFragment.java b/app/src/main/java/com/quantumcoin/app/view/fragment/SendFragment.java similarity index 95% rename from app/src/main/java/com/quantumcoinwallet/app/view/fragment/SendFragment.java rename to app/src/main/java/com/quantumcoin/app/view/fragment/SendFragment.java index aad7b7b..e4efee0 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/SendFragment.java +++ b/app/src/main/java/com/quantumcoin/app/view/fragment/SendFragment.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.fragment; +package com.quantumcoin.app.view.fragment; import android.annotation.SuppressLint; import android.app.Activity; @@ -31,22 +31,22 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.api.read.ApiException; -import com.quantumcoinwallet.app.api.read.model.AccountTokenListResponse; -import com.quantumcoinwallet.app.api.read.model.AccountTokenSummary; -import com.quantumcoinwallet.app.api.read.model.BalanceResponse; -import com.quantumcoinwallet.app.asynctask.read.AccountBalanceRestTask; -import com.quantumcoinwallet.app.asynctask.read.ListAccountTokensRestTask; -import com.quantumcoinwallet.app.bridge.BridgeCallback; -import com.quantumcoinwallet.app.entity.ServiceException; -import com.quantumcoinwallet.app.keystorage.SecureStorage; -import com.quantumcoinwallet.app.utils.CoinUtils; -import com.quantumcoinwallet.app.utils.GlobalMethods; -import com.quantumcoinwallet.app.utils.PrefConnect; -import com.quantumcoinwallet.app.view.dialog.TransactionReviewDialog; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; -import com.quantumcoinwallet.app.viewmodel.KeyViewModel; +import com.quantumcoin.app.R; +import com.quantumcoin.app.api.read.ApiException; +import com.quantumcoin.app.api.read.model.AccountTokenListResponse; +import com.quantumcoin.app.api.read.model.AccountTokenSummary; +import com.quantumcoin.app.api.read.model.BalanceResponse; +import com.quantumcoin.app.asynctask.read.AccountBalanceRestTask; +import com.quantumcoin.app.asynctask.read.ListAccountTokensRestTask; +import com.quantumcoin.app.bridge.BridgeCallback; +import com.quantumcoin.app.entity.ServiceException; +import com.quantumcoin.app.keystorage.SecureStorage; +import com.quantumcoin.app.utils.CoinUtils; +import com.quantumcoin.app.utils.GlobalMethods; +import com.quantumcoin.app.utils.PrefConnect; +import com.quantumcoin.app.view.dialog.TransactionReviewDialog; +import com.quantumcoin.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.viewmodel.KeyViewModel; import org.json.JSONObject; import java.io.IOException; @@ -89,10 +89,10 @@ public class SendFragment extends Fragment { * this snapshot at signing time; if the user (or another window) has * switched networks or the active wallet between Review and Sign we * abort instead of broadcasting a wrong-chain signature. See - * {@link com.quantumcoinwallet.app.networking.NetworkSnapshot}. + * {@link com.quantumcoin.app.networking.NetworkSnapshot}. */ @Nullable - private com.quantumcoinwallet.app.networking.NetworkSnapshot pendingNetworkSnapshot; + private com.quantumcoin.app.networking.NetworkSnapshot pendingNetworkSnapshot; private LinearLayout linerLayoutOffline; private ImageView imageViewRetry; @@ -313,7 +313,7 @@ public void onClick(View v) { String raw = addressToSendEditText.getText() == null ? "" : addressToSendEditText.getText().toString().trim(); if (raw.isEmpty()) return; - Uri u = com.quantumcoinwallet.app.networking.UrlBuilder + Uri u = com.quantumcoin.app.networking.UrlBuilder .blockExplorerAccountUrl(raw); if (u == null) return; try { @@ -464,7 +464,7 @@ private void validateAddressViaSdkThen(final View view, return; } try { - KeyViewModel.getBridge().isValidAddressAsync(toAddress, new com.quantumcoinwallet.app.bridge.BridgeCallback() { + KeyViewModel.getBridge().isValidAddressAsync(toAddress, new com.quantumcoin.app.bridge.BridgeCallback() { @Override public void onResult(String envelopeJson) { boolean valid = parseEnvelopeBoolean(envelopeJson, "valid"); @@ -518,7 +518,7 @@ private void maybeAdvisoryAndContinue(final View view, return; } try { - KeyViewModel.getBridge().getChecksumAddressAsync(toAddress, new com.quantumcoinwallet.app.bridge.BridgeCallback() { + KeyViewModel.getBridge().getChecksumAddressAsync(toAddress, new com.quantumcoin.app.bridge.BridgeCallback() { @Override public void onResult(String envelopeJson) { String canonical = parseEnvelopeString(envelopeJson, "address"); @@ -670,7 +670,7 @@ public void run() { if (act == null || !isAdded()) return; try { KeyViewModel.getBridge().isValidAddressAsync(raw, - new com.quantumcoinwallet.app.bridge.BridgeCallback() { + new com.quantumcoin.app.bridge.BridgeCallback() { @Override public void onResult(String envelopeJson) { final boolean valid = @@ -844,7 +844,7 @@ public void onConfirm() { // a wrong-chain signature. try { pendingNetworkSnapshot = - com.quantumcoinwallet.app.networking.NetworkSnapshot + com.quantumcoin.app.networking.NetworkSnapshot .capture(walletAddress == null ? "" : walletAddress); } catch (Throwable t) { pendingNetworkSnapshot = null; @@ -897,9 +897,9 @@ private void unlockDialogFragment(View view, ProgressBar progressBarSendCoins, // Per-context autofill identity so a password manager can // disambiguate the strongbox-unlock password from any // per-wallet backup password the user may have stored. - com.quantumcoinwallet.app.security.CredentialIdentifier.apply( + com.quantumcoin.app.security.CredentialIdentifier.apply( passwordEditText, - com.quantumcoinwallet.app.security.CredentialIdentifier.Context.STRONGBOX_UNLOCK, + com.quantumcoin.app.security.CredentialIdentifier.Context.STRONGBOX_UNLOCK, null); // Invisible username carrying the strongbox-scoped value // so the autofill provider scopes its suggestion to the @@ -910,9 +910,9 @@ private void unlockDialogFragment(View view, ProgressBar progressBarSendCoins, android.view.ViewGroup unlockRoot = (android.view.ViewGroup) dialog.findViewById(R.id.linear_layout_unlock_content); if (unlockRoot != null) { - com.quantumcoinwallet.app.security.CredentialIdentifier.attachUsernameField( + com.quantumcoin.app.security.CredentialIdentifier.attachUsernameField( unlockRoot, - com.quantumcoinwallet.app.security.CredentialIdentifier + com.quantumcoin.app.security.CredentialIdentifier .strongboxUsername(getContext())); } GlobalMethods.focusAndShowKeyboard(passwordEditText, dialog); @@ -928,7 +928,7 @@ private void unlockDialogFragment(View view, ProgressBar progressBarSendCoins, // they decide to abort here we should let them — money // is not yet broadcast. The wrapper centralises the // close-button + back-key semantics. - com.quantumcoinwallet.app.view.dialog.UnlockDialogs.applyMandatory(dialog, false); + com.quantumcoin.app.view.dialog.UnlockDialogs.applyMandatory(dialog, false); unlockButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { @@ -953,8 +953,8 @@ public void onClick(View v) { // Previously the dialog was dismissed here and the // sign+broadcast phase ran with no modal, which // could look like the app had stopped responding. - final com.quantumcoinwallet.app.view.dialog.WaitDialog.MessageHandle waitHandle = - com.quantumcoinwallet.app.view.dialog.WaitDialog.showMessage( + final com.quantumcoin.app.view.dialog.WaitDialog.MessageHandle waitHandle = + com.quantumcoin.app.view.dialog.WaitDialog.showMessage( getContext(), jsonViewModel.getWaitUnlockByLangValues()); new Thread(new Runnable() { @Override @@ -967,11 +967,11 @@ public void run() { // both the device and a stash of guesses // can't double their attempts by // alternating Send and Settings. - com.quantumcoinwallet.app.security.UnlockAttemptLimiter.Decision lim = - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter.Decision lim = + com.quantumcoin.app.security.UnlockAttemptLimiter .currentDecision(getContext()); - if (lim.kind == com.quantumcoinwallet.app.security.UnlockAttemptLimiter.DecisionKind.LOCKED) { - lockoutMessage = com.quantumcoinwallet.app.security + if (lim.kind == com.quantumcoin.app.security.UnlockAttemptLimiter.DecisionKind.LOCKED) { + lockoutMessage = com.quantumcoin.app.security .UnlockAttemptLimiter.userFacingLockoutMessage(lim.remainingSeconds, jsonViewModel); } else { SecureStorage secureStorage = KeyViewModel.getSecureStorage(); @@ -988,7 +988,7 @@ public void run() { // cases (locked -> unlock, already-unlocked -> // verifyPassword). if (secureStorage.isUnlocked()) { - com.quantumcoinwallet.app.keystorage.UnlockCoordinator uc = + com.quantumcoin.app.keystorage.UnlockCoordinator uc = secureStorage.getCoordinator(); ok = uc != null && uc.verifyPassword(getContext(), password.trim()); @@ -996,14 +996,14 @@ public void run() { ok = secureStorage.unlock(getContext(), password.trim()); } if (ok) { - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter .recordSuccess(getContext(), - com.quantumcoinwallet.app.security + com.quantumcoin.app.security .UnlockAttemptLimiter.Channel.STRONGBOX_UNLOCK); } else { - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter .recordFailure(getContext(), - com.quantumcoinwallet.app.security + com.quantumcoin.app.security .UnlockAttemptLimiter.Channel.STRONGBOX_UNLOCK); } } @@ -1117,7 +1117,7 @@ public void onFinished(BalanceResponse balanceResponse) throws ServiceException progressBar.setVisibility(View.GONE); } @Override - public void onFailure(com.quantumcoinwallet.app.api.read.ApiException e) { + public void onFailure(com.quantumcoin.app.api.read.ApiException e) { progressBar.setVisibility(View.GONE); int code = e.getCode(); boolean check = GlobalMethods.ApiExceptionSourceCodeBoolean(code); @@ -1145,7 +1145,7 @@ public void onFailure(com.quantumcoinwallet.app.api.read.ApiException e) { } /** - * Re-asserts the {@link com.quantumcoinwallet.app.networking.NetworkSnapshot} + * Re-asserts the {@link com.quantumcoin.app.networking.NetworkSnapshot} * captured when the user confirmed the review dialog. Throws an * {@link Exception} (which the caller surfaces via the standard error * dialog) when the snapshot diverges, so we never sign a transaction @@ -1155,13 +1155,13 @@ public void onFailure(com.quantumcoinwallet.app.api.read.ApiException e) { * sends from this surface. */ private void assertReviewNetworkStillCurrent(String fromAddress) throws Exception { - com.quantumcoinwallet.app.networking.NetworkSnapshot snap = pendingNetworkSnapshot; + com.quantumcoin.app.networking.NetworkSnapshot snap = pendingNetworkSnapshot; if (snap == null) { throw new Exception("send aborted: review snapshot missing"); } try { snap.assertStillCurrent(fromAddress == null ? "" : fromAddress); - } catch (com.quantumcoinwallet.app.networking.NetworkSnapshot.NetworkAssertionException nae) { + } catch (com.quantumcoin.app.networking.NetworkSnapshot.NetworkAssertionException nae) { // Drop the snapshot so a retry forces a fresh review. pendingNetworkSnapshot = null; throw new Exception("send aborted: " + nae.getMessage()); @@ -1179,7 +1179,7 @@ private void assertReviewNetworkStillCurrent(String fromAddress) throws Exceptio */ private void sendTransaction(Context context, ProgressBar progressBar, String fromAddress, String toAddress, String quantity, String languageKey, - final com.quantumcoinwallet.app.view.dialog.WaitDialog.MessageHandle waitHandle) { + final com.quantumcoin.app.view.dialog.WaitDialog.MessageHandle waitHandle) { try { if (progressBar.getVisibility() == View.VISIBLE) { String message = getResources().getString(R.string.send_transaction_message_exits); @@ -1311,11 +1311,11 @@ private void setupAssetSpinner(final Spinner spinner, raw.addAll(GlobalMethods.CURRENT_WALLET_TOKEN_LIST); } List filtered = - com.quantumcoinwallet.app.tokens.StablecoinImpersonatorFilter.filter(raw); + com.quantumcoin.app.tokens.StablecoinImpersonatorFilter.filter(raw); sendRecognizedTokens = new ArrayList<>(); sendUnrecognizedTokens = new ArrayList<>(); for (AccountTokenSummary t : filtered) { - if (com.quantumcoinwallet.app.tokens.RecognizedTokens + if (com.quantumcoin.app.tokens.RecognizedTokens .isRecognized(t == null ? null : t.getContractAddress())) { sendRecognizedTokens.add(t); } else { @@ -1483,7 +1483,7 @@ private void sendCompletedDialogFragment(Context context, final String txHash) { // Tx hashes are public on-chain // data; copyAddress (no auto-clear) is // the right semantic. - com.quantumcoinwallet.app.utils.SecureClipboard.copyAddress( + com.quantumcoin.app.utils.SecureClipboard.copyAddress( getActivity(), "txHash", txHash); } }); @@ -1496,7 +1496,7 @@ private void sendCompletedDialogFragment(Context context, final String txHash) { explorerBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Regex-validated + percent-encoded. - android.net.Uri u = com.quantumcoinwallet.app.networking.UrlBuilder + android.net.Uri u = com.quantumcoin.app.networking.UrlBuilder .blockExplorerTxUrl(txHash); if (u == null) return; try { diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/SettingsFragment.java b/app/src/main/java/com/quantumcoin/app/view/fragment/SettingsFragment.java similarity index 93% rename from app/src/main/java/com/quantumcoinwallet/app/view/fragment/SettingsFragment.java rename to app/src/main/java/com/quantumcoin/app/view/fragment/SettingsFragment.java index aa08fc6..dd0ff72 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/SettingsFragment.java +++ b/app/src/main/java/com/quantumcoin/app/view/fragment/SettingsFragment.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.fragment; +package com.quantumcoin.app.view.fragment; import android.content.Context; import android.os.Bundle; @@ -16,9 +16,9 @@ import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.utils.PrefConnect; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.R; +import com.quantumcoin.app.utils.PrefConnect; +import com.quantumcoin.app.viewmodel.JsonViewModel; public class SettingsFragment extends Fragment { @@ -220,11 +220,11 @@ private void showBackupDialog(final JsonViewModel jsonViewModel) { PrefConnect.writeBoolean(getContext(), PrefConnect.BACKUP_ENABLED_KEY, phoneEnabled.isChecked()); try { new android.app.backup.BackupManager(getContext().getApplicationContext()).dataChanged(); - com.quantumcoinwallet.app.Logger.i("SettingsFragment", + com.quantumcoin.app.Logger.i("SettingsFragment", "BACKUP_ENABLED toggled -> " + phoneEnabled.isChecked() + "; BackupManager.dataChanged() called"); } catch (Throwable t) { - com.quantumcoinwallet.app.Logger.w("SettingsFragment", + com.quantumcoin.app.Logger.w("SettingsFragment", "BackupManager.dataChanged() failed (toggle still recorded)", t); } dialog.dismiss(); @@ -248,8 +248,8 @@ static ScrollViewWrapper wrap(Context ctx, View content) { private void markActivityUnlocked() { try { android.app.Activity act = getActivity(); - if (act instanceof com.quantumcoinwallet.app.view.activities.HomeActivity) { - ((com.quantumcoinwallet.app.view.activities.HomeActivity) act).markUnlockedNow(); + if (act instanceof com.quantumcoin.app.view.activities.HomeActivity) { + ((com.quantumcoin.app.view.activities.HomeActivity) act).markUnlockedNow(); } } catch (Exception ignore) { } } @@ -257,8 +257,8 @@ private void markActivityUnlocked() { private void setSuppressNextResumeLock(boolean suppress) { try { android.app.Activity act = getActivity(); - if (act instanceof com.quantumcoinwallet.app.view.activities.HomeActivity) { - ((com.quantumcoinwallet.app.view.activities.HomeActivity) act).setSuppressNextResumeLock(suppress); + if (act instanceof com.quantumcoin.app.view.activities.HomeActivity) { + ((com.quantumcoin.app.view.activities.HomeActivity) act).setSuppressNextResumeLock(suppress); } } catch (Exception ignore) { } } diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/WalletsFragment.java b/app/src/main/java/com/quantumcoin/app/view/fragment/WalletsFragment.java similarity index 90% rename from app/src/main/java/com/quantumcoinwallet/app/view/fragment/WalletsFragment.java rename to app/src/main/java/com/quantumcoin/app/view/fragment/WalletsFragment.java index ee707a8..8db24eb 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/fragment/WalletsFragment.java +++ b/app/src/main/java/com/quantumcoin/app/view/fragment/WalletsFragment.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.fragment; +package com.quantumcoin.app.view.fragment; import android.content.Context; import android.os.Bundle; @@ -16,15 +16,15 @@ import androidx.fragment.app.FragmentManager; import androidx.recyclerview.widget.RecyclerView; -import com.quantumcoinwallet.app.R; -import com.quantumcoinwallet.app.keystorage.SecureStorage; -import com.quantumcoinwallet.app.utils.GlobalMethods; -import com.quantumcoinwallet.app.utils.GridAutoFitLayoutManager; -import com.quantumcoinwallet.app.utils.PrefConnect; -import com.quantumcoinwallet.app.utils.Utility; -import com.quantumcoinwallet.app.view.adapter.WalletAdapter; -import com.quantumcoinwallet.app.viewmodel.JsonViewModel; -import com.quantumcoinwallet.app.viewmodel.KeyViewModel; +import com.quantumcoin.app.R; +import com.quantumcoin.app.keystorage.SecureStorage; +import com.quantumcoin.app.utils.GlobalMethods; +import com.quantumcoin.app.utils.GridAutoFitLayoutManager; +import com.quantumcoin.app.utils.PrefConnect; +import com.quantumcoin.app.utils.Utility; +import com.quantumcoin.app.view.adapter.WalletAdapter; +import com.quantumcoin.app.viewmodel.JsonViewModel; +import com.quantumcoin.app.viewmodel.KeyViewModel; import java.util.Map; import java.util.Objects; @@ -204,9 +204,9 @@ private void unlockDialogFragment(ProgressBar progressBar, int listenerStatus, S // password. Same context as Send / HomeActivity unlock so // a password manager surfaces the SAME entry across all // three surfaces. - com.quantumcoinwallet.app.security.CredentialIdentifier.apply( + com.quantumcoin.app.security.CredentialIdentifier.apply( passwordEditText, - com.quantumcoinwallet.app.security.CredentialIdentifier.Context.STRONGBOX_UNLOCK, + com.quantumcoin.app.security.CredentialIdentifier.Context.STRONGBOX_UNLOCK, null); // Inject the invisible username field so the autofill // provider scopes its suggestion / save to the strongbox @@ -219,9 +219,9 @@ private void unlockDialogFragment(ProgressBar progressBar, int listenerStatus, S android.view.ViewGroup unlockRoot = (android.view.ViewGroup) dialog.findViewById(R.id.linear_layout_unlock_content); if (unlockRoot != null) { - com.quantumcoinwallet.app.security.CredentialIdentifier.attachUsernameField( + com.quantumcoin.app.security.CredentialIdentifier.attachUsernameField( unlockRoot, - com.quantumcoinwallet.app.security.CredentialIdentifier + com.quantumcoin.app.security.CredentialIdentifier .strongboxUsername(getContext())); } Button unlockButton = (Button) dialog.findViewById(R.id.button_unlock_langValues_unlock); @@ -239,7 +239,7 @@ private void unlockDialogFragment(ProgressBar progressBar, int listenerStatus, S // legitimately back out without performing the action. // The wrapper exposes the close button and re-enables the // back key. - com.quantumcoinwallet.app.view.dialog.UnlockDialogs.applyMandatory(dialog, false); + com.quantumcoin.app.view.dialog.UnlockDialogs.applyMandatory(dialog, false); unlockButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String walletPassword = passwordEditText.getText().toString(); @@ -289,7 +289,7 @@ private void VerifyPassword(final AlertDialog dialog, final int listenerStatus, final String walletAddress, final String languageKey) { - final AlertDialog waitDlg = com.quantumcoinwallet.app.view.dialog.WaitDialog + final AlertDialog waitDlg = com.quantumcoin.app.view.dialog.WaitDialog .show(getContext(), jsonViewModel.getWaitUnlockByLangValues()); new Thread(new Runnable() { @Override @@ -302,29 +302,29 @@ public void run() { // locked out. See iOS UnlockAttemptLimiter // for the matching pre-scrypt check on the // strongbox-unlock channel. - com.quantumcoinwallet.app.security.UnlockAttemptLimiter.Decision lim = - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter.Decision lim = + com.quantumcoin.app.security.UnlockAttemptLimiter .currentDecision(getContext()); - if (lim.kind == com.quantumcoinwallet.app.security.UnlockAttemptLimiter.DecisionKind.LOCKED) { - lockoutMessage = com.quantumcoinwallet.app.security + if (lim.kind == com.quantumcoin.app.security.UnlockAttemptLimiter.DecisionKind.LOCKED) { + lockoutMessage = com.quantumcoin.app.security .UnlockAttemptLimiter.userFacingLockoutMessage(lim.remainingSeconds, jsonViewModel); } else { SecureStorage secureStorage = KeyViewModel.getSecureStorage(); unlocked = secureStorage.unlock(getContext(), walletPassword); if (unlocked) { - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter .recordSuccess(getContext(), - com.quantumcoinwallet.app.security + com.quantumcoin.app.security .UnlockAttemptLimiter.Channel.STRONGBOX_UNLOCK); } else { - com.quantumcoinwallet.app.security.UnlockAttemptLimiter + com.quantumcoin.app.security.UnlockAttemptLimiter .recordFailure(getContext(), - com.quantumcoinwallet.app.security + com.quantumcoin.app.security .UnlockAttemptLimiter.Channel.STRONGBOX_UNLOCK); } } } catch (Exception e) { - com.quantumcoinwallet.app.Logger.e(TAG, "unlock failed", e); + com.quantumcoin.app.Logger.e(TAG, "unlock failed", e); } final boolean ok = unlocked; final String lockoutMessageFinal = lockoutMessage; diff --git a/app/src/main/java/com/quantumcoinwallet/app/view/widget/VerticalScrollIndicatorView.java b/app/src/main/java/com/quantumcoin/app/view/widget/VerticalScrollIndicatorView.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/view/widget/VerticalScrollIndicatorView.java rename to app/src/main/java/com/quantumcoin/app/view/widget/VerticalScrollIndicatorView.java index 1d14d3a..c06e85b 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/view/widget/VerticalScrollIndicatorView.java +++ b/app/src/main/java/com/quantumcoin/app/view/widget/VerticalScrollIndicatorView.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.view.widget; +package com.quantumcoin.app.view.widget; import android.content.Context; import android.graphics.Canvas; diff --git a/app/src/main/java/com/quantumcoinwallet/app/viewmodel/BlockchainNetworkViewModel.java b/app/src/main/java/com/quantumcoin/app/viewmodel/BlockchainNetworkViewModel.java similarity index 91% rename from app/src/main/java/com/quantumcoinwallet/app/viewmodel/BlockchainNetworkViewModel.java rename to app/src/main/java/com/quantumcoin/app/viewmodel/BlockchainNetworkViewModel.java index b81da1e..902a28a 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/viewmodel/BlockchainNetworkViewModel.java +++ b/app/src/main/java/com/quantumcoin/app/viewmodel/BlockchainNetworkViewModel.java @@ -1,11 +1,11 @@ -package com.quantumcoinwallet.app.viewmodel; +package com.quantumcoin.app.viewmodel; import android.content.Context; import androidx.lifecycle.ViewModel; -import com.quantumcoinwallet.app.interact.BlockchainNetworkInteract; -import com.quantumcoinwallet.app.utils.GlobalMethods; +import com.quantumcoin.app.interact.BlockchainNetworkInteract; +import com.quantumcoin.app.utils.GlobalMethods; import org.json.JSONException; diff --git a/app/src/main/java/com/quantumcoinwallet/app/viewmodel/JsonViewModel.java b/app/src/main/java/com/quantumcoin/app/viewmodel/JsonViewModel.java similarity index 99% rename from app/src/main/java/com/quantumcoinwallet/app/viewmodel/JsonViewModel.java rename to app/src/main/java/com/quantumcoin/app/viewmodel/JsonViewModel.java index 9fc02b4..85d44a6 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/viewmodel/JsonViewModel.java +++ b/app/src/main/java/com/quantumcoin/app/viewmodel/JsonViewModel.java @@ -1,11 +1,11 @@ -package com.quantumcoinwallet.app.viewmodel; +package com.quantumcoin.app.viewmodel; import android.content.Context; import androidx.lifecycle.ViewModel; -import com.quantumcoinwallet.app.interact.JsonInteract; -import com.quantumcoinwallet.app.utils.GlobalMethods; +import com.quantumcoin.app.interact.JsonInteract; +import com.quantumcoin.app.utils.GlobalMethods; import org.json.JSONException; diff --git a/app/src/main/java/com/quantumcoinwallet/app/viewmodel/KeyViewModel.java b/app/src/main/java/com/quantumcoin/app/viewmodel/KeyViewModel.java similarity index 92% rename from app/src/main/java/com/quantumcoinwallet/app/viewmodel/KeyViewModel.java rename to app/src/main/java/com/quantumcoin/app/viewmodel/KeyViewModel.java index 4210404..f396f1e 100644 --- a/app/src/main/java/com/quantumcoinwallet/app/viewmodel/KeyViewModel.java +++ b/app/src/main/java/com/quantumcoin/app/viewmodel/KeyViewModel.java @@ -1,13 +1,13 @@ -package com.quantumcoinwallet.app.viewmodel; +package com.quantumcoin.app.viewmodel; import android.content.Context; -import com.quantumcoinwallet.app.bridge.BridgeCallback; -import com.quantumcoinwallet.app.bridge.QuantumCoinJSBridge; -import com.quantumcoinwallet.app.bridge.WebViewManager; -import com.quantumcoinwallet.app.interact.KeyInteract; -import com.quantumcoinwallet.app.keystorage.SecureStorage; -import com.quantumcoinwallet.app.services.KeyService; +import com.quantumcoin.app.bridge.BridgeCallback; +import com.quantumcoin.app.bridge.QuantumCoinJSBridge; +import com.quantumcoin.app.bridge.WebViewManager; +import com.quantumcoin.app.interact.KeyInteract; +import com.quantumcoin.app.keystorage.SecureStorage; +import com.quantumcoin.app.services.KeyService; import androidx.lifecycle.ViewModel; public class KeyViewModel extends ViewModel { diff --git a/app/src/main/res/layout/account_transactions_fragment.xml b/app/src/main/res/layout/account_transactions_fragment.xml index 37484bf..6acd849 100644 --- a/app/src/main/res/layout/account_transactions_fragment.xml +++ b/app/src/main/res/layout/account_transactions_fragment.xml @@ -138,7 +138,7 @@ android:layout_weight="1" android:orientation="horizontal"> - @@ -172,7 +172,7 @@ - diff --git a/app/src/main/res/layout/home_main_fragment.xml b/app/src/main/res/layout/home_main_fragment.xml index 51ab1b4..fbfdbb7 100644 --- a/app/src/main/res/layout/home_main_fragment.xml +++ b/app/src/main/res/layout/home_main_fragment.xml @@ -164,7 +164,7 @@ android:layout_height="wrap_content" android:orientation="horizontal"> - @@ -367,7 +367,7 @@ - diff --git a/app/src/test/java/com/quantumcoinwallet/app/ExampleUnitTest.java b/app/src/test/java/com/quantumcoin/app/ExampleUnitTest.java similarity index 90% rename from app/src/test/java/com/quantumcoinwallet/app/ExampleUnitTest.java rename to app/src/test/java/com/quantumcoin/app/ExampleUnitTest.java index 4bfabb7..aee1485 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/ExampleUnitTest.java +++ b/app/src/test/java/com/quantumcoin/app/ExampleUnitTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app; +package com.quantumcoin.app; import org.junit.Test; diff --git a/app/src/test/java/com/quantumcoinwallet/app/LoggerFacadeLockdownTest.java b/app/src/test/java/com/quantumcoin/app/LoggerFacadeLockdownTest.java similarity index 96% rename from app/src/test/java/com/quantumcoinwallet/app/LoggerFacadeLockdownTest.java rename to app/src/test/java/com/quantumcoin/app/LoggerFacadeLockdownTest.java index 4fdedd5..4d34019 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/LoggerFacadeLockdownTest.java +++ b/app/src/test/java/com/quantumcoin/app/LoggerFacadeLockdownTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app; +package com.quantumcoin.app; import static org.junit.Assert.fail; @@ -77,7 +77,7 @@ public class LoggerFacadeLockdownTest { @Test public void noStrayDirectLogCalls() throws Exception { - File mainJava = new File("src/main/java/com/quantumcoinwallet/app"); + File mainJava = new File("src/main/java/com/quantumcoin/app"); Assume.assumeTrue("source root not found at " + mainJava.getAbsolutePath() + "; running outside the app module CWD.", mainJava.exists()); List violations = new ArrayList<>(); @@ -107,7 +107,7 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) }); if (!violations.isEmpty()) { fail("Logger facade bypass detected (" + violations.size() + " call sites). " - + "Route through com.quantumcoinwallet.app.Logger. instead:\n - " + + "Route through com.quantumcoin.app.Logger. instead:\n - " + String.join("\n - ", violations)); } } diff --git a/app/src/test/java/com/quantumcoinwallet/app/RedactingDebugTreeTest.java b/app/src/test/java/com/quantumcoin/app/RedactingDebugTreeTest.java similarity index 98% rename from app/src/test/java/com/quantumcoinwallet/app/RedactingDebugTreeTest.java rename to app/src/test/java/com/quantumcoin/app/RedactingDebugTreeTest.java index e42c807..0c63070 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/RedactingDebugTreeTest.java +++ b/app/src/test/java/com/quantumcoin/app/RedactingDebugTreeTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app; +package com.quantumcoin.app; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; diff --git a/app/src/test/java/com/quantumcoinwallet/app/api/read/ApiDecodingTest.java b/app/src/test/java/com/quantumcoin/app/api/read/ApiDecodingTest.java similarity index 91% rename from app/src/test/java/com/quantumcoinwallet/app/api/read/ApiDecodingTest.java rename to app/src/test/java/com/quantumcoin/app/api/read/ApiDecodingTest.java index e6f31d3..ead7f1e 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/api/read/ApiDecodingTest.java +++ b/app/src/test/java/com/quantumcoin/app/api/read/ApiDecodingTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.api.read; +package com.quantumcoin.app.api.read; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -8,12 +8,12 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonDeserializer; -import com.quantumcoinwallet.app.api.read.model.AccountPendingTransactionSummaryResponse; -import com.quantumcoinwallet.app.api.read.model.AccountTokenListResponse; -import com.quantumcoinwallet.app.api.read.model.AccountTokenSummary; -import com.quantumcoinwallet.app.api.read.model.AccountTransactionSummary; -import com.quantumcoinwallet.app.api.read.model.AccountTransactionSummaryResponse; -import com.quantumcoinwallet.app.api.read.model.BalanceResponse; +import com.quantumcoin.app.api.read.model.AccountPendingTransactionSummaryResponse; +import com.quantumcoin.app.api.read.model.AccountTokenListResponse; +import com.quantumcoin.app.api.read.model.AccountTokenSummary; +import com.quantumcoin.app.api.read.model.AccountTransactionSummary; +import com.quantumcoin.app.api.read.model.AccountTransactionSummaryResponse; +import com.quantumcoin.app.api.read.model.BalanceResponse; import org.junit.Test; @@ -28,7 +28,7 @@ *

Each test loads a captured-from-live-API JSON fixture under * {@code app/src/test/resources/api-fixtures/} and decodes it with * the same {@link Gson} configuration the production - * {@link com.quantumcoinwallet.app.api.read.ApiClient} uses. The goal + * {@link com.quantumcoin.app.api.read.ApiClient} uses. The goal * is to lock in two preserved API quirks that have bitten the wallet * before: *

    @@ -66,7 +66,7 @@ public class ApiDecodingTest { /** * Build a Gson configured the same way the production - * {@link com.quantumcoinwallet.app.api.read.ApiClient} does PLUS a + * {@link com.quantumcoin.app.api.read.ApiClient} does PLUS a * {@link OffsetDateTime} type adapter. The production client runs * on Android (where the strict-reflection-on-JDK-internals issue * does not apply); on the JVM 21 unit-test classpath we register diff --git a/app/src/test/java/com/quantumcoinwallet/app/asynctask/read/AccountBalanceRestTaskHardeningTest.java b/app/src/test/java/com/quantumcoin/app/asynctask/read/AccountBalanceRestTaskHardeningTest.java similarity index 95% rename from app/src/test/java/com/quantumcoinwallet/app/asynctask/read/AccountBalanceRestTaskHardeningTest.java rename to app/src/test/java/com/quantumcoin/app/asynctask/read/AccountBalanceRestTaskHardeningTest.java index e1a1a99..dfbaadc 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/asynctask/read/AccountBalanceRestTaskHardeningTest.java +++ b/app/src/test/java/com/quantumcoin/app/asynctask/read/AccountBalanceRestTaskHardeningTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.asynctask.read; +package com.quantumcoin.app.asynctask.read; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; @@ -21,9 +21,9 @@ * when a poor-quality network response (e.g. an HTTP intermediary * returning an HTML captive-portal page instead of JSON) caused * Gson's {@code JsonSyntaxException} to escape the OpenAPI-generated - * {@link com.quantumcoinwallet.app.api.read.ApiClient} stack. The + * {@link com.quantumcoin.app.api.read.ApiClient} stack. The * generated client only converts {@link java.io.IOException} into - * {@link com.quantumcoinwallet.app.api.read.ApiException}; an + * {@link com.quantumcoin.app.api.read.ApiException}; an * unchecked exception thrown deeper in the stack would propagate out * of the worker runnable, the {@code mainHandler.post(...)} call * would never run, the listener would never be invoked, and the @@ -35,7 +35,7 @@ *
      *
    1. The worker {@code try} block has a fall-through * {@code catch (Throwable t)} that wraps the failure into an - * {@link com.quantumcoinwallet.app.api.read.ApiException} so the + * {@link com.quantumcoin.app.api.read.ApiException} so the * listener's {@code onFailure} always runs.
    2. * *
    3. A {@code cancel()} method exists and an @@ -128,7 +128,7 @@ public void cancelledFlagSuppressesListenerDispatch() throws Exception { } private static String readSource() throws Exception { - File f = new File("src/main/java/com/quantumcoinwallet/" + File f = new File("src/main/java/com/quantumcoin/" + "app/asynctask/read/AccountBalanceRestTask.java"); if (!f.exists()) { fail("AccountBalanceRestTask.java not found at expected " diff --git a/app/src/test/java/com/quantumcoinwallet/app/backup/BackupExecutorExportPathTest.java b/app/src/test/java/com/quantumcoin/app/backup/BackupExecutorExportPathTest.java similarity index 99% rename from app/src/test/java/com/quantumcoinwallet/app/backup/BackupExecutorExportPathTest.java rename to app/src/test/java/com/quantumcoin/app/backup/BackupExecutorExportPathTest.java index cc95bfa..2ccec6f 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/backup/BackupExecutorExportPathTest.java +++ b/app/src/test/java/com/quantumcoin/app/backup/BackupExecutorExportPathTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.backup; +package com.quantumcoin.app.backup; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; diff --git a/app/src/test/java/com/quantumcoinwallet/app/backup/CloudBackupManagerScanTest.java b/app/src/test/java/com/quantumcoin/app/backup/CloudBackupManagerScanTest.java similarity index 99% rename from app/src/test/java/com/quantumcoinwallet/app/backup/CloudBackupManagerScanTest.java rename to app/src/test/java/com/quantumcoin/app/backup/CloudBackupManagerScanTest.java index 3cc5cfa..0e89c98 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/backup/CloudBackupManagerScanTest.java +++ b/app/src/test/java/com/quantumcoin/app/backup/CloudBackupManagerScanTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.backup; +package com.quantumcoin.app.backup; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; diff --git a/app/src/test/java/com/quantumcoinwallet/app/bridge/SendBridgeContractTest.java b/app/src/test/java/com/quantumcoin/app/bridge/SendBridgeContractTest.java similarity index 98% rename from app/src/test/java/com/quantumcoinwallet/app/bridge/SendBridgeContractTest.java rename to app/src/test/java/com/quantumcoin/app/bridge/SendBridgeContractTest.java index 4604e02..c5ec912 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/bridge/SendBridgeContractTest.java +++ b/app/src/test/java/com/quantumcoin/app/bridge/SendBridgeContractTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.bridge; +package com.quantumcoin.app.bridge; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -61,7 +61,7 @@ public class SendBridgeContractTest { private static final File JAVA = new File( - "src/main/java/com/quantumcoinwallet/app/bridge/QuantumCoinJSBridge.java"); + "src/main/java/com/quantumcoin/app/bridge/QuantumCoinJSBridge.java"); private static final File HTML = new File( "src/main/assets/bridge.html"); diff --git a/app/src/test/java/com/quantumcoinwallet/app/bridge/SendSurfaceLockdownTest.java b/app/src/test/java/com/quantumcoin/app/bridge/SendSurfaceLockdownTest.java similarity index 98% rename from app/src/test/java/com/quantumcoinwallet/app/bridge/SendSurfaceLockdownTest.java rename to app/src/test/java/com/quantumcoin/app/bridge/SendSurfaceLockdownTest.java index c75f5d0..6487079 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/bridge/SendSurfaceLockdownTest.java +++ b/app/src/test/java/com/quantumcoin/app/bridge/SendSurfaceLockdownTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.bridge; +package com.quantumcoin.app.bridge; import static org.junit.Assert.assertTrue; diff --git a/app/src/test/java/com/quantumcoinwallet/app/interact/JsonInteractParityTest.java b/app/src/test/java/com/quantumcoin/app/interact/JsonInteractParityTest.java similarity index 99% rename from app/src/test/java/com/quantumcoinwallet/app/interact/JsonInteractParityTest.java rename to app/src/test/java/com/quantumcoin/app/interact/JsonInteractParityTest.java index e03516f..cd0d4b0 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/interact/JsonInteractParityTest.java +++ b/app/src/test/java/com/quantumcoin/app/interact/JsonInteractParityTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.interact; +package com.quantumcoin.app.interact; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; diff --git a/app/src/test/java/com/quantumcoinwallet/app/keystorage/AddNetworkPersistsToStrongboxTest.java b/app/src/test/java/com/quantumcoin/app/keystorage/AddNetworkPersistsToStrongboxTest.java similarity index 96% rename from app/src/test/java/com/quantumcoinwallet/app/keystorage/AddNetworkPersistsToStrongboxTest.java rename to app/src/test/java/com/quantumcoin/app/keystorage/AddNetworkPersistsToStrongboxTest.java index 238f318..2587355 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/keystorage/AddNetworkPersistsToStrongboxTest.java +++ b/app/src/test/java/com/quantumcoin/app/keystorage/AddNetworkPersistsToStrongboxTest.java @@ -1,13 +1,13 @@ -package com.quantumcoinwallet.app.keystorage; +package com.quantumcoin.app.keystorage; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import com.quantumcoinwallet.app.model.BlockchainNetwork; -import com.quantumcoinwallet.app.strongbox.StrongboxPayload; -import com.quantumcoinwallet.app.utils.NetworkPersistence; +import com.quantumcoin.app.model.BlockchainNetwork; +import com.quantumcoin.app.strongbox.StrongboxPayload; +import com.quantumcoin.app.utils.NetworkPersistence; import org.junit.Test; diff --git a/app/src/test/java/com/quantumcoinwallet/app/keystorage/MacUtilTest.java b/app/src/test/java/com/quantumcoin/app/keystorage/MacUtilTest.java similarity index 98% rename from app/src/test/java/com/quantumcoinwallet/app/keystorage/MacUtilTest.java rename to app/src/test/java/com/quantumcoin/app/keystorage/MacUtilTest.java index da94456..3aa4239 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/keystorage/MacUtilTest.java +++ b/app/src/test/java/com/quantumcoin/app/keystorage/MacUtilTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.keystorage; +package com.quantumcoin.app.keystorage; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; diff --git a/app/src/test/java/com/quantumcoinwallet/app/networking/UrlBuilderHostInvariantTest.java b/app/src/test/java/com/quantumcoin/app/networking/UrlBuilderHostInvariantTest.java similarity index 98% rename from app/src/test/java/com/quantumcoinwallet/app/networking/UrlBuilderHostInvariantTest.java rename to app/src/test/java/com/quantumcoin/app/networking/UrlBuilderHostInvariantTest.java index 72e94eb..64cdb06 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/networking/UrlBuilderHostInvariantTest.java +++ b/app/src/test/java/com/quantumcoin/app/networking/UrlBuilderHostInvariantTest.java @@ -1,11 +1,11 @@ -package com.quantumcoinwallet.app.networking; +package com.quantumcoin.app.networking; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -import com.quantumcoinwallet.app.utils.GlobalMethods; +import com.quantumcoin.app.utils.GlobalMethods; import org.junit.After; import org.junit.Before; diff --git a/app/src/test/java/com/quantumcoinwallet/app/networking/UrlBuilderLockdownTest.java b/app/src/test/java/com/quantumcoin/app/networking/UrlBuilderLockdownTest.java similarity index 98% rename from app/src/test/java/com/quantumcoinwallet/app/networking/UrlBuilderLockdownTest.java rename to app/src/test/java/com/quantumcoin/app/networking/UrlBuilderLockdownTest.java index f7a88d2..f0d484b 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/networking/UrlBuilderLockdownTest.java +++ b/app/src/test/java/com/quantumcoin/app/networking/UrlBuilderLockdownTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.networking; +package com.quantumcoin.app.networking; import static org.junit.Assert.assertTrue; diff --git a/app/src/test/java/com/quantumcoinwallet/app/networking/UrlBuilderTest.java b/app/src/test/java/com/quantumcoin/app/networking/UrlBuilderTest.java similarity index 96% rename from app/src/test/java/com/quantumcoinwallet/app/networking/UrlBuilderTest.java rename to app/src/test/java/com/quantumcoin/app/networking/UrlBuilderTest.java index 88f1de6..f7aae4b 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/networking/UrlBuilderTest.java +++ b/app/src/test/java/com/quantumcoin/app/networking/UrlBuilderTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.networking; +package com.quantumcoin.app.networking; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; diff --git a/app/src/test/java/com/quantumcoinwallet/app/security/BackupRestoreLimiterRecordingTest.java b/app/src/test/java/com/quantumcoin/app/security/BackupRestoreLimiterRecordingTest.java similarity index 98% rename from app/src/test/java/com/quantumcoinwallet/app/security/BackupRestoreLimiterRecordingTest.java rename to app/src/test/java/com/quantumcoin/app/security/BackupRestoreLimiterRecordingTest.java index 5f4ef08..c6ab5a7 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/security/BackupRestoreLimiterRecordingTest.java +++ b/app/src/test/java/com/quantumcoin/app/security/BackupRestoreLimiterRecordingTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.security; +package com.quantumcoin.app.security; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -47,7 +47,7 @@ public class BackupRestoreLimiterRecordingTest { private static final String FRAGMENT_PATH = - "app/src/main/java/com/quantumcoinwallet/app/view/fragment/" + "app/src/main/java/com/quantumcoin/app/view/fragment/" + "HomeWalletFragment.java"; @Test diff --git a/app/src/test/java/com/quantumcoinwallet/app/security/CredentialIdentifierUsernameParityTest.java b/app/src/test/java/com/quantumcoin/app/security/CredentialIdentifierUsernameParityTest.java similarity index 99% rename from app/src/test/java/com/quantumcoinwallet/app/security/CredentialIdentifierUsernameParityTest.java rename to app/src/test/java/com/quantumcoin/app/security/CredentialIdentifierUsernameParityTest.java index 4f3e8ed..6837ca1 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/security/CredentialIdentifierUsernameParityTest.java +++ b/app/src/test/java/com/quantumcoin/app/security/CredentialIdentifierUsernameParityTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.security; +package com.quantumcoin.app.security; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; diff --git a/app/src/test/java/com/quantumcoinwallet/app/security/TlsPinningConnectionSpecTest.java b/app/src/test/java/com/quantumcoin/app/security/TlsPinningConnectionSpecTest.java similarity index 99% rename from app/src/test/java/com/quantumcoinwallet/app/security/TlsPinningConnectionSpecTest.java rename to app/src/test/java/com/quantumcoin/app/security/TlsPinningConnectionSpecTest.java index 5512c41..8d1eff9 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/security/TlsPinningConnectionSpecTest.java +++ b/app/src/test/java/com/quantumcoin/app/security/TlsPinningConnectionSpecTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.security; +package com.quantumcoin.app.security; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; diff --git a/app/src/test/java/com/quantumcoinwallet/app/security/UnlockAttemptLimiterTest.java b/app/src/test/java/com/quantumcoin/app/security/UnlockAttemptLimiterTest.java similarity index 98% rename from app/src/test/java/com/quantumcoinwallet/app/security/UnlockAttemptLimiterTest.java rename to app/src/test/java/com/quantumcoin/app/security/UnlockAttemptLimiterTest.java index b5e886b..5de0945 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/security/UnlockAttemptLimiterTest.java +++ b/app/src/test/java/com/quantumcoin/app/security/UnlockAttemptLimiterTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.security; +package com.quantumcoin.app.security; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; diff --git a/app/src/test/java/com/quantumcoinwallet/app/security/WalletCreationPasswordWhitespaceTest.java b/app/src/test/java/com/quantumcoin/app/security/WalletCreationPasswordWhitespaceTest.java similarity index 95% rename from app/src/test/java/com/quantumcoinwallet/app/security/WalletCreationPasswordWhitespaceTest.java rename to app/src/test/java/com/quantumcoin/app/security/WalletCreationPasswordWhitespaceTest.java index a8a8a6b..c96b00a 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/security/WalletCreationPasswordWhitespaceTest.java +++ b/app/src/test/java/com/quantumcoin/app/security/WalletCreationPasswordWhitespaceTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.security; +package com.quantumcoin.app.security; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -25,7 +25,7 @@ * permanently locked the user out of their strongbox. * *

      The fix adds a reject-on-whitespace guard mirroring - * {@link com.quantumcoinwallet.app.view.dialog.BackupPasswordDialog}'s + * {@link com.quantumcoin.app.view.dialog.BackupPasswordDialog}'s * {@code showCreateMode} (lines 234-239) and the iOS counterpart in * {@code HomeWalletViewController.swift}. * @@ -85,7 +85,7 @@ public void passwordSpaceWordingMatchesIosByteForByte() throws Exception { @Test public void jsonInteractHasPasswordSpaceAccessor() throws Exception { Class ji = Class.forName( - "com.quantumcoinwallet.app.interact.JsonInteract"); + "com.quantumcoin.app.interact.JsonInteract"); Method m = ji.getDeclaredMethod("getPasswordSpaceByErrors"); assertNotNull(m); assertEquals(String.class, m.getReturnType()); @@ -99,7 +99,7 @@ public void jsonViewModelHasPasswordSpaceAccessor() throws Exception { // falls back to whatever default the helper provides — which // for HomeWalletFragment is a null-message dialog. Pin it. Class vm = Class.forName( - "com.quantumcoinwallet.app.viewmodel.JsonViewModel"); + "com.quantumcoin.app.viewmodel.JsonViewModel"); Method m = vm.getDeclaredMethod("getPasswordSpaceByErrors"); assertNotNull(m); assertEquals(String.class, m.getReturnType()); diff --git a/app/src/test/java/com/quantumcoinwallet/app/strongbox/DeterministicSecureRandomSource.java b/app/src/test/java/com/quantumcoin/app/strongbox/DeterministicSecureRandomSource.java similarity index 96% rename from app/src/test/java/com/quantumcoinwallet/app/strongbox/DeterministicSecureRandomSource.java rename to app/src/test/java/com/quantumcoin/app/strongbox/DeterministicSecureRandomSource.java index 1350e3b..6fe321e 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/strongbox/DeterministicSecureRandomSource.java +++ b/app/src/test/java/com/quantumcoin/app/strongbox/DeterministicSecureRandomSource.java @@ -1,6 +1,6 @@ -package com.quantumcoinwallet.app.strongbox; +package com.quantumcoin.app.strongbox; -import com.quantumcoinwallet.app.keystorage.SecureRandomSource; +import com.quantumcoin.app.keystorage.SecureRandomSource; import java.util.Arrays; diff --git a/app/src/test/java/com/quantumcoinwallet/app/strongbox/DeterministicSecureRandomSourceTest.java b/app/src/test/java/com/quantumcoin/app/strongbox/DeterministicSecureRandomSourceTest.java similarity index 98% rename from app/src/test/java/com/quantumcoinwallet/app/strongbox/DeterministicSecureRandomSourceTest.java rename to app/src/test/java/com/quantumcoin/app/strongbox/DeterministicSecureRandomSourceTest.java index 836e9c6..bc5adf8 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/strongbox/DeterministicSecureRandomSourceTest.java +++ b/app/src/test/java/com/quantumcoin/app/strongbox/DeterministicSecureRandomSourceTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.strongbox; +package com.quantumcoin.app.strongbox; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; diff --git a/app/src/test/java/com/quantumcoinwallet/app/strongbox/StrongboxFileCodecScryptValidationTest.java b/app/src/test/java/com/quantumcoin/app/strongbox/StrongboxFileCodecScryptValidationTest.java similarity index 99% rename from app/src/test/java/com/quantumcoinwallet/app/strongbox/StrongboxFileCodecScryptValidationTest.java rename to app/src/test/java/com/quantumcoin/app/strongbox/StrongboxFileCodecScryptValidationTest.java index 9236a18..663dd36 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/strongbox/StrongboxFileCodecScryptValidationTest.java +++ b/app/src/test/java/com/quantumcoin/app/strongbox/StrongboxFileCodecScryptValidationTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.strongbox; +package com.quantumcoin.app.strongbox; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; diff --git a/app/src/test/java/com/quantumcoinwallet/app/strongbox/StrongboxPaddingTest.java b/app/src/test/java/com/quantumcoin/app/strongbox/StrongboxPaddingTest.java similarity index 99% rename from app/src/test/java/com/quantumcoinwallet/app/strongbox/StrongboxPaddingTest.java rename to app/src/test/java/com/quantumcoin/app/strongbox/StrongboxPaddingTest.java index 5a65aa4..0e1e875 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/strongbox/StrongboxPaddingTest.java +++ b/app/src/test/java/com/quantumcoin/app/strongbox/StrongboxPaddingTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.strongbox; +package com.quantumcoin.app.strongbox; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; diff --git a/app/src/test/java/com/quantumcoinwallet/app/strongbox/StrongboxPayloadV3Test.java b/app/src/test/java/com/quantumcoin/app/strongbox/StrongboxPayloadV3Test.java similarity index 99% rename from app/src/test/java/com/quantumcoinwallet/app/strongbox/StrongboxPayloadV3Test.java rename to app/src/test/java/com/quantumcoin/app/strongbox/StrongboxPayloadV3Test.java index ba4e477..a6e438a 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/strongbox/StrongboxPayloadV3Test.java +++ b/app/src/test/java/com/quantumcoin/app/strongbox/StrongboxPayloadV3Test.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.strongbox; +package com.quantumcoin.app.strongbox; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; diff --git a/app/src/test/java/com/quantumcoinwallet/app/strongbox/StrongboxPortabilityVectorTest.java b/app/src/test/java/com/quantumcoin/app/strongbox/StrongboxPortabilityVectorTest.java similarity index 98% rename from app/src/test/java/com/quantumcoinwallet/app/strongbox/StrongboxPortabilityVectorTest.java rename to app/src/test/java/com/quantumcoin/app/strongbox/StrongboxPortabilityVectorTest.java index b261c81..bfcea1c 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/strongbox/StrongboxPortabilityVectorTest.java +++ b/app/src/test/java/com/quantumcoin/app/strongbox/StrongboxPortabilityVectorTest.java @@ -1,12 +1,12 @@ -package com.quantumcoinwallet.app.strongbox; +package com.quantumcoin.app.strongbox; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import com.quantumcoinwallet.app.keystorage.Aead; -import com.quantumcoinwallet.app.keystorage.MacUtil; +import com.quantumcoin.app.keystorage.Aead; +import com.quantumcoin.app.keystorage.MacUtil; import com.google.gson.JsonObject; import com.google.gson.JsonParser; diff --git a/app/src/test/java/com/quantumcoinwallet/app/strongbox/WalletEntryCodecTest.java b/app/src/test/java/com/quantumcoin/app/strongbox/WalletEntryCodecTest.java similarity index 98% rename from app/src/test/java/com/quantumcoinwallet/app/strongbox/WalletEntryCodecTest.java rename to app/src/test/java/com/quantumcoin/app/strongbox/WalletEntryCodecTest.java index 12f9e9e..4978626 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/strongbox/WalletEntryCodecTest.java +++ b/app/src/test/java/com/quantumcoin/app/strongbox/WalletEntryCodecTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.strongbox; +package com.quantumcoin.app.strongbox; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; @@ -22,7 +22,7 @@ *

      Locks in: *

        *
      • round-trip equivalence with the legacy JSON shape so - * {@link com.quantumcoinwallet.app.keystorage.SecureStorage} + * {@link com.quantumcoin.app.keystorage.SecureStorage} * callers see no behaviour change;
      • *
      • address case preservation (EIP-55 checksummed * addresses are common and the wallet maps key on the diff --git a/app/src/test/java/com/quantumcoinwallet/app/tokens/StablecoinImpersonatorFilterTest.java b/app/src/test/java/com/quantumcoin/app/tokens/StablecoinImpersonatorFilterTest.java similarity index 97% rename from app/src/test/java/com/quantumcoinwallet/app/tokens/StablecoinImpersonatorFilterTest.java rename to app/src/test/java/com/quantumcoin/app/tokens/StablecoinImpersonatorFilterTest.java index 217270d..660c271 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/tokens/StablecoinImpersonatorFilterTest.java +++ b/app/src/test/java/com/quantumcoin/app/tokens/StablecoinImpersonatorFilterTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.tokens; +package com.quantumcoin.app.tokens; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -6,7 +6,7 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import com.quantumcoinwallet.app.api.read.model.AccountTokenSummary; +import com.quantumcoin.app.api.read.model.AccountTokenSummary; import org.junit.Assume; import org.junit.Test; @@ -186,9 +186,9 @@ public void homeAndSendApplyFilterBeforeBucketing() throws IOException { // chokepoints because there is no Robolectric / framework // surface to run them against in pure-JVM tests. String homeMain = readSource( - "src/main/java/com/quantumcoinwallet/app/view/fragment/HomeMainFragment.java"); + "src/main/java/com/quantumcoin/app/view/fragment/HomeMainFragment.java"); String sendFrag = readSource( - "src/main/java/com/quantumcoinwallet/app/view/fragment/SendFragment.java"); + "src/main/java/com/quantumcoin/app/view/fragment/SendFragment.java"); assertContainsCallSite(homeMain, "HomeMainFragment.java", "applyFilteredItems", @@ -211,7 +211,7 @@ public void androidPatternListMatchesIosPattern() throws IOException { // sibling repo checked out) so a fresh-clone Android-only // contributor still gets a green test run. File androidFile = new File( - "src/main/java/com/quantumcoinwallet/app/tokens/StablecoinImpersonatorFilter.java"); + "src/main/java/com/quantumcoin/app/tokens/StablecoinImpersonatorFilter.java"); File iosSnapshot = new File( "src/test/resources/code-snapshots/StablecoinImpersonatorFilter.swift"); diff --git a/app/src/test/java/com/quantumcoinwallet/app/utils/CoinUtilsCapsTest.java b/app/src/test/java/com/quantumcoin/app/utils/CoinUtilsCapsTest.java similarity index 98% rename from app/src/test/java/com/quantumcoinwallet/app/utils/CoinUtilsCapsTest.java rename to app/src/test/java/com/quantumcoin/app/utils/CoinUtilsCapsTest.java index 2b0d57c..6d6aa22 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/utils/CoinUtilsCapsTest.java +++ b/app/src/test/java/com/quantumcoin/app/utils/CoinUtilsCapsTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.utils; +package com.quantumcoin.app.utils; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; diff --git a/app/src/test/java/com/quantumcoinwallet/app/utils/SecureClipboardSeedGateLockdownTest.java b/app/src/test/java/com/quantumcoin/app/utils/SecureClipboardSeedGateLockdownTest.java similarity index 99% rename from app/src/test/java/com/quantumcoinwallet/app/utils/SecureClipboardSeedGateLockdownTest.java rename to app/src/test/java/com/quantumcoin/app/utils/SecureClipboardSeedGateLockdownTest.java index 648f514..ed0d965 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/utils/SecureClipboardSeedGateLockdownTest.java +++ b/app/src/test/java/com/quantumcoin/app/utils/SecureClipboardSeedGateLockdownTest.java @@ -1,4 +1,4 @@ -package com.quantumcoinwallet.app.utils; +package com.quantumcoin.app.utils; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertTrue; @@ -55,7 +55,7 @@ public class SecureClipboardSeedGateLockdownTest { private static final String SOURCE_ROOT = - "src/main/java/com/quantumcoinwallet/app"; + "src/main/java/com/quantumcoin/app"; /** * Pattern that matches the strict SDK_INT comparison the helper diff --git a/app/src/test/java/com/quantumcoinwallet/app/view/fragment/HomeWalletFragmentRestoreConfirmTest.java b/app/src/test/java/com/quantumcoin/app/view/fragment/HomeWalletFragmentRestoreConfirmTest.java similarity index 98% rename from app/src/test/java/com/quantumcoinwallet/app/view/fragment/HomeWalletFragmentRestoreConfirmTest.java rename to app/src/test/java/com/quantumcoin/app/view/fragment/HomeWalletFragmentRestoreConfirmTest.java index 049ba66..29c8376 100644 --- a/app/src/test/java/com/quantumcoinwallet/app/view/fragment/HomeWalletFragmentRestoreConfirmTest.java +++ b/app/src/test/java/com/quantumcoin/app/view/fragment/HomeWalletFragmentRestoreConfirmTest.java @@ -1,11 +1,11 @@ -package com.quantumcoinwallet.app.view.fragment; +package com.quantumcoin.app.view.fragment; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import com.quantumcoinwallet.app.utils.CoinUtils; +import com.quantumcoin.app.utils.CoinUtils; import org.junit.Test; @@ -146,7 +146,7 @@ public void m4_8_expandedReviewerComment_anchorsPresent() throws Exception { // do this rather than a synthetic class doc test because the // comment block is the deliverable -- its presence is the // assertion. - java.io.File f = new java.io.File("src/main/java/com/quantumcoinwallet/" + java.io.File f = new java.io.File("src/main/java/com/quantumcoin/" + "app/view/fragment/HomeWalletFragment.java"); org.junit.Assume.assumeTrue("HomeWalletFragment.java not found in expected" + " path; running outside the app module CWD.", f.exists()); @@ -186,7 +186,7 @@ public void confirmWalletBalanceTaskField_existsAndIsCancellable() throws Except assertEquals("In-flight balance task must be the cancellable " + "AccountBalanceRestTask type so the helper can " + "supersede it.", - "com.quantumcoinwallet.app.asynctask.read.AccountBalanceRestTask", + "com.quantumcoin.app.asynctask.read.AccountBalanceRestTask", taskField.getType().getName()); Method cancelHelper = findDeclaredMethod(FRAG, @@ -209,7 +209,7 @@ public void confirmWalletBalanceTask_supersededOnNavigationAndDestroy() throws E // (onDestroyView) must invoke // cancelInFlightConfirmWalletBalanceTask. A missed call // would re-introduce the stale-callback regression. - java.io.File f = new java.io.File("src/main/java/com/quantumcoinwallet/" + java.io.File f = new java.io.File("src/main/java/com/quantumcoin/" + "app/view/fragment/HomeWalletFragment.java"); org.junit.Assume.assumeTrue("HomeWalletFragment.java not found.", f.exists()); String src = new String(java.nio.file.Files.readAllBytes(f.toPath()), @@ -242,7 +242,7 @@ public void saveWalletPasswordNotSet_reArmsNextButton() throws Exception { // Next button permanently disabled. The user could see the // error dialog but had no way to retry except by tearing // down the fragment. - java.io.File f = new java.io.File("src/main/java/com/quantumcoinwallet/" + java.io.File f = new java.io.File("src/main/java/com/quantumcoin/" + "app/view/fragment/HomeWalletFragment.java"); org.junit.Assume.assumeTrue("HomeWalletFragment.java not found.", f.exists()); String src = new String(java.nio.file.Files.readAllBytes(f.toPath()), @@ -273,7 +273,7 @@ public void promptStrongboxPasswordEarlyReturns_reArmNextButton() throws Excepti // resetting confirmWalletSaveInProgress. Pin the fix so a // future refactor cannot strand Next disabled when the // fragment is mid-detach. - java.io.File f = new java.io.File("src/main/java/com/quantumcoinwallet/" + java.io.File f = new java.io.File("src/main/java/com/quantumcoin/" + "app/view/fragment/HomeWalletFragment.java"); org.junit.Assume.assumeTrue("HomeWalletFragment.java not found.", f.exists()); String src = new String(java.nio.file.Files.readAllBytes(f.toPath()), @@ -335,7 +335,7 @@ public void confirmWalletDeriveWaitDialog_dismissedWithoutActivityRef() throws E // dismissal through a Handler bound to the main looper so // the dismiss + error path always runs. Pin the source // marker so a refactor cannot silently revert. - java.io.File f = new java.io.File("src/main/java/com/quantumcoinwallet/" + java.io.File f = new java.io.File("src/main/java/com/quantumcoin/" + "app/view/fragment/HomeWalletFragment.java"); org.junit.Assume.assumeTrue("HomeWalletFragment.java not found.", f.exists()); String src = new String(java.nio.file.Files.readAllBytes(f.toPath()), @@ -397,7 +397,7 @@ public void mismatchCheckGatedToCreateFlowOnly() throws Exception { // that excludes the restore flow. The simplest stable // signature is a nearby reference to // isRestoreFromSeedFlow (the boolean introduced by the fix). - java.io.File f = new java.io.File("src/main/java/com/quantumcoinwallet/" + java.io.File f = new java.io.File("src/main/java/com/quantumcoin/" + "app/view/fragment/HomeWalletFragment.java"); org.junit.Assume.assumeTrue("HomeWalletFragment.java not found.", f.exists()); String src = new String(java.nio.file.Files.readAllBytes(f.toPath()), @@ -445,7 +445,7 @@ public void m4_4_visibleValueDoesNotAppendCoinsSuffix_inSourceContract() throws // formatWei output. If a future maintainer reintroduces the // " + coinsLabel" concatenation on the visible TextView, // this test catches it at PR time. - java.io.File f = new java.io.File("src/main/java/com/quantumcoinwallet/" + java.io.File f = new java.io.File("src/main/java/com/quantumcoin/" + "app/view/fragment/HomeWalletFragment.java"); org.junit.Assume.assumeTrue("HomeWalletFragment.java not found.", f.exists()); String src = new String(java.nio.file.Files.readAllBytes(f.toPath()), diff --git a/tests/fixtures/strongbox-v3-vectors/INDEX.md b/tests/fixtures/strongbox-v3-vectors/INDEX.md index c287deb..00db984 100644 --- a/tests/fixtures/strongbox-v3-vectors/INDEX.md +++ b/tests/fixtures/strongbox-v3-vectors/INDEX.md @@ -14,7 +14,7 @@ The expansion rule is: iOS implements this in `QuantumCoinWalletTests/StrongboxLayerTests.swift` as `TestShake256`; Android implements it in -`app/src/test/java/com/quantumcoinwallet/app/strongbox/StrongboxPortabilityVectorTest.java` +`app/src/test/java/com/quantumcoin/app/strongbox/StrongboxPortabilityVectorTest.java` through BouncyCastle `SHAKEDigest(256)`. The test code hardcodes only the seed and small expected outputs