Commit Graph

149 Commits

Author SHA1 Message Date
Carter Jernigan a48b18e1be
[#556] Adopt SDK 1.9 ZcashNetwork API 2022-08-04 11:56:50 -04:00
Carter Jernigan f9afd2e5f9
[#536] Adopt BlockHeight API (#537)
Note that this change modifies the on-disk representation of the wallet.  Anyone who has an earlier build install will see a runtime crash.  This is expected, as we are not supporting data migrations at this stage of development.  The solution is to uninstall/reinstall the app.
2022-07-26 10:46:23 -04:00
Carter Jernigan 72e50ec54a
[#549] Kotlin 1.7.10 2022-07-22 12:58:45 -04:00
Carter Jernigan 18a81eaef4
[#545] Detekt 1.21.0 2022-07-19 07:10:34 -04:00
Carter Jernigan 87dbf3b60a
[#543] Gradle 7.5 2022-07-18 10:44:58 -04:00
Carter Jernigan 7ca9761ba8 [#539] Coroutines 1.6.4 2022-07-15 07:09:21 -04:00
Carter Jernigan ba19fe6120 [#533] Update to SDK 1.7 2022-07-08 08:14:33 -04:00
Honza Rychnovsky 84e910b05e
[#495] AndroidX Dependency Update
* Dependency update androidx.appcompat:appcompat [1.4.1 -> 1.4.2]

* Dependency update androidx.core:core-ktx [1.7.0 -> 1.8.0]

* Dependency update androidx.test:orchestrator [1.4.2-alpha03 -> 1.4.2-alpha04]

* Dependency update androidx.test:runner [1.5.0-alpha03 -> 1.5.0-alpha04]

* Androidx Test 1.5.0-alpha01

* Androidx Lifecycle 2.5.0

* Androidx Navigation 2.5.0

* Androidx Camera 1.1.0

* Androidx Activity 1.5.0

* Androidx Annotation 1.4.0

Co-authored-by: Carter Jernigan <git@carterjernigan.com>
2022-06-30 15:37:38 +02:00
Carter Jernigan f6a6bedf2b [#557] Compose Compiler 1.2.0/Compose 1.2.0-rc03 2022-06-30 07:11:40 -04:00
Carter Jernigan 1aa763e475 [#507] Coroutines 1.6.3 2022-06-30 07:11:40 -04:00
Carter Jernigan 3037a5ae93 [#521] Kotlinx datetime 0.4.0 2022-06-30 07:11:40 -04:00
Carter Jernigan 811e7e900c [#557] Kotlin 1.7.0 2022-06-30 07:11:40 -04:00
Honza Rychnovsky 35af2bdfc9
[#496] New package suffix for the app builds
- Created new gradle.properties attributes to configure package and app name
- Improved app/build.gradle to support the attribute
- Let Manifest file work with the new placeholder app name field
- Change debug builds with suffixes to avoid production app collision

Co-authored-by: Carter Jernigan <git@carterjernigan.com>
2022-06-29 16:47:32 -04:00
Honza Rychnovsky a08c82ad5d
[#494] Dependancy update: Compose 1.2.0-rc02 2022-06-28 15:08:41 +02:00
Carter Jernigan 0ffaab953b
[#510] Consume Zatoshi from SDK (#514)
Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2022-06-23 07:31:16 -04:00
Carter Jernigan 45aff80e76
[#511] Ktlint 0.46.1 2022-06-22 05:48:19 -04:00
Carter Jernigan 77a1881930
[#479] Compile SDK 33
Since we have strict compiler warnings, the API deprecations in Android API 33 will fail our build. This change therefore:
 - Bumps the compile SDK
 - Adds helper extensions to use the new methods on Android 33+ and old methods for older Android versions.  Although the functionality is the same, the wrappers will make it easier to eliminate legacy API calls in the future
 - Disabled Gradle warning.  #508 is a followup to remove this flag later.
 - Refactor Update screen tests

Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2022-06-21 07:49:09 -04:00
Carter Jernigan a88dc36804 [#482] Support BIP-39 included builds 2022-06-14 18:20:51 -04:00
Honza Rychnovsky 90c2fcb255
[#209] Compose dependency update
* [#209] Update Compose dependency to latest version 1.2.0-beta03

- Update dependency
- Align our integration tests with the new Compose requirements
- Add integration folder to tests, if missing
- Split integration tests, which require activity to separate classes
- Remove unnecessary custom activity for each integration app part and create one custom common activity
- Implement Downloadable fonts from Compose 1.2
- Update Third party licenses documentation
2022-06-14 08:50:55 +02:00
Honza Rychnovsky 2145698bba
[#393] Update Compose Material3 to version 1.0.0-alpha13
- Update Compose Material3 dependency
- Increase compile and target SDK versions to 32
- Use Scaffold paddingValues to move content below TopBar
- Re-enable ignored test check_all_ui_elements_displayed()
2022-06-09 18:31:44 +02:00
Honza Rychnovsky 0dfd8d1e22
[#421] Compose compiler version to 1.2.0-beta03 2022-06-07 14:30:10 +02:00
Carter Jernigan a47c179812 [#441] Make included build path configurable 2022-06-07 07:09:40 -04:00
Honza Rychnovsky 0023eb287a
[#430] Crash Intel 64-bit Emulators
* [#430] App crashes on Intel x86_64 emulators

- Bump the SDK version to the latest snapshot version.
- Set app's max Android SDK version to 31 for wtf emulators.
- Remove overridden wtf emulators config from sdk-ext-lib module.
2022-06-07 07:24:45 +02:00
Carter Jernigan 1ce826e453 [#464] Use Kover for multiplatform coverage 2022-06-06 08:41:01 -04:00
Carter Jernigan 1880b2a43f
[#200][#285] Use Espresso screenshot API
- Also reduced liklihood of timeouts on Firebase test lab for robo tests
 - Fix emulatorwtf run configuration
 - Fix screenshots on older API levels
 - Fix minumum range for emulator.wtf
2022-06-02 11:09:02 -04:00
Honza Rychnovsky adc774a20d
[#313] scan qr screen functional
* [#312] [#309] Scaffold Scan QR Screen
- Screen scaffolding.
- Model classes.
- Screen states handling.
- Needed dependencies added.
- Camera permission handling. Redirect to Settings.
- Added SettingsUtilTest class.
- Added view classes tests.
- Renamed tag class in update package.
- Fix the scan frame size while changing the screen orientation.
- Use local variable for cameraProvider.
- Use UUID for source of randomness.
- Eliminate blocking call for camera.
- Fix preview name.
- Remove Google Guava dependency.
- Suppress Lint warning.
- Improved calculation of the camera frame size. Moved it into Constraint layout.
- Added custom image analyser class.
- Implemented logic for the QR scan screen while QR code is found.
- Manual tests added.
- New module with integration tests for QR Scan screen. Added 3 integration and 4 view tests.
- Simplify QR Scan screen view basic tests.
- Switched from pure compose permission handling to Accompanist way of handling CAMERA permission.
- Added validation of Zcash wallet address from QR scanning result.
- Fix the integration tests for the CI WTF emulator runs.
- Add comment on RTL test result.
- Improve waitForDeviceIdle() method. Use it on the other test too.
- Change the integration test module main manifest package name.
- Debounce scans.
- Improve thread safety of scan collection.
- Added instructions on how to set up an emulator in manual tests.
- Replace compose collectAsState() with coroutine launch().
- Add sample() to get rid of several callback events at the same time.
- Stop updating the scanState when it's already in Scanning state.
- Fix condition on navigation.
- Remove validateJob check.
- Speed up the integration test
- Wrap ImageAnalysis.qrCodeFlow to remember.
- Auto-close the camera image when we're done with it in all cases.
- Update minimal SDK version to 24 for WTF emulators.
- Update Architecture documentation.
- Removed extra blank space in ui-design module definition.
- Add ui-integration-test-lib.
- Update Mermaid diagram with newly added module.
- Move UI modules into one wrap in the diagram.
- Move sdk-ext-lib and sdk-ext-ui under the same modules section.
- Update camera dependencies.
Co-authored-by: Carter Jernigan <git@carterjernigan.com>
2022-06-02 13:35:51 +02:00
Carter Jernigan 8b6d0bd1b4 [#460] Coroutines 1.6.2 2022-06-01 05:22:57 -04:00
Carter Jernigan e9fd67a51a [#421] Kotlin 1.6.21 and Compose Compiler 1.2.0-beta02 2022-06-01 05:22:57 -04:00
Carter Jernigan ea68d63dd2 [#387] Detekt 1.20.0 2022-06-01 05:22:57 -04:00
Carter Jernigan a0f22be16f [#454] Splashscreen 1.0.0-rc01 2022-06-01 05:22:57 -04:00
Carter Jernigan d7c225e1d4 [#459] Fladle 0.17.4 2022-06-01 05:22:57 -04:00
Carter Jernigan 319f3a3a6d [#458] Androidx Test updates 2022-06-01 05:22:57 -04:00
Carter Jernigan 2b3ae156a6 [#455] Zxing 3.5.0 2022-06-01 05:22:57 -04:00
Carter Jernigan 2005e8a481 [#453] Gradle versions plugin 0.42.0 2022-06-01 05:22:57 -04:00
Carter Jernigan b9eea25574 [#452] AGP 7.2.1 2022-06-01 05:22:57 -04:00
Carter Jernigan 7b6aba5fbb [#444] Zcash SDK 1.5.0-beta01 2022-06-01 05:22:57 -04:00
Carter Jernigan 94d259d5b0
[#190] Pull screenshots on CI 2022-05-24 09:39:56 -04:00
Honza Rychnovsky caf58f963a
[#312] Scan QR Screen Scaffold
* [#312] [#309] Scaffold Scan QR Screen

- Screen scaffolding.
- Model classes.
- Screen states handling.
- Needed dependencies added.
- Camera permission handling. Redirect to Settings.
- Added SettingsUtilTest class.
- Added view classes tests.
- Renamed tag class in update package.
- Fix the scan frame size while changing the screen orientation.
- Suppress Lint warning
Co-authored-by: Carter Jernigan <git@carterjernigan.com>
2022-05-19 14:41:58 +02:00
Carter Jernigan a8be47bf89
[#433] Use emulator.wtf for tests on CI (#428)
This should speed up our builds and reduce flakiness.

Followup items:
 - Enable coverage
 - Collect screenshots
 - Fix target API on sdk-ext-lib #430
2022-05-17 10:06:56 -04:00
Honza Rychnovsky 665042e6d9
[#211] check for app updates
- Basic screen UI scaffolding.
- Set up communication with Google Play in-app update API.
- Mocking communication with Google Play API.
- Added unit, UI and integration tests for the in-app update screen model, util, view and viewmodel classes.
- Added mock implementation of helper AppUpdateChecker class.
- Introduced ViewModel integration test.
- Filed issue for future manual testing of implemented in-app update mechanisms after the wallet app is released on Google Play.
-  Implement FakeAppUpdateManager in AppUpdateCheckerMock instead of the ugly AppUpdateInfo instantiation - this affected the tests too.
Co-authored-by: Carter Jernigan <git@carterjernigan.com>
2022-05-16 13:40:50 +02:00
Carter Jernigan a65aec18a4
[#418] Android Gradle Plugin 7.2.0 2022-05-11 16:24:52 -04:00
Carter Jernigan 3e67fda537
[#394] Kotlin 1.6.20
Also updated the Compose compiler to be compatible
2022-04-22 10:57:56 -04:00
Carter Jernigan 48bd2e8ced
[#213] Contact support scaffold
This provides a basic screen for users to type a support inquiery, which then opens a pre-filled message in the user’s email app.

There are a few followup issues:
 - Detect seed phrases in the email #377
 - Report crashes in the generated email #378
 - Fuzz timestamps #388
 - Set the correct support email address #379
 - Improve handling on devices without an email app #386
2022-04-19 21:28:49 -04:00
Carter Jernigan 741593eeb0 [#366] Navigation Compose 2.4.2 2022-04-12 10:09:14 -04:00
Carter Jernigan a0294fb1f4 [#365] Compose Material3 1.0.0-alpha09 2022-04-12 10:09:14 -04:00
Carter Jernigan 79c3d43426 [#367] ktlint 0.45.2 2022-04-12 10:09:14 -04:00
Carter Jernigan ac1635261e [#368] Jacoco 0.8.8 2022-04-12 10:09:14 -04:00
Carter Jernigan b280914a84 [#358] AGP 7.1.3 2022-04-12 10:09:14 -04:00
Carter Jernigan 482a48edb7
[#199] Pull test results from Firebase Test Lab
A future iteration should generate the HTML reports from these XML files

This rolls back Flank to 21.09.0 but does maintain the ability to version Flank separately.
2022-04-08 14:06:34 -04:00
Carter Jernigan ea52674a68 [#342] Coroutines 1.6.1 2022-04-06 07:56:17 -04:00
Carter Jernigan 8be473a988 [#335] Flank 22.03.0 2022-04-06 07:56:17 -04:00
Carter Jernigan 116a0de32f [#332] jgit 6.1.0 2022-04-06 07:56:17 -04:00
Carter Jernigan f22586eacf [#330] Compose Material3 1.0.0-alpha08
Removed the proxy to the Material2 TextField in favor of the Material3 TextField
2022-04-06 07:56:17 -04:00
Carter Jernigan 556524b4bc [#331] Compose 1.1.1 2022-04-06 07:56:17 -04:00
Carter Jernigan c0a5d2607c [#329] AndroidX Updates
Updated to use the latest splash screen API
2022-04-06 07:56:17 -04:00
Carter Jernigan 3844d9987c [#328] ktlint 0.45.1 2022-04-06 07:56:17 -04:00
Carter Jernigan 45e14e6a4b [#173] Adopt SDK API changes
This allows the app to consume the snapshot version of the SDK, which contains a number of API changes.

A followup issue of #279 was filed so that the app can be reverted to the release version of the SDK once the SDK API stabilizes again.
2022-03-16 13:00:13 -04:00
Carter Jernigan 842fcd1574 [#233] Android Gradle Plugin 7.1.2 2022-02-28 08:05:22 -05:00
Carter Jernigan 6be2590ad8 [#116] Migrate to Material 3 2022-02-21 09:48:14 -05:00
Carter Jernigan 8efa866a3d [#228] Androidx Test 1.4.1-alpha04
Also corrected the fact that `test-core` and `test-runner` can be versioned independently
2022-02-21 09:26:57 -05:00
Carter Jernigan 260d5d10ac [#206] Compose 1.1
Also bump navigation-compose to 2.4.1 and lifecycle-compose to 2.4.1
2022-02-21 09:26:57 -05:00
Carter Jernigan 469c2ccd37 [#216] ktlint 0.44.0 2022-02-21 09:26:57 -05:00
Carter Jernigan c6c59eefe1 [#198] Android Gradle Plugin 7.1.1 2022-02-21 09:26:57 -05:00
Carter Jernigan 52588e6bd3
[#191] Background sync
Preliminary and limited version of background sync, with the following limitations
 - Sync is always enabled
 - Default sync period is 24 hours and is not updated once the wallet is created

This change refactors the synchronizer to a global singleton that both WorkManager and the UI can interact with.
2022-02-04 07:37:08 -05:00
Carter Jernigan b6ed705866
[#178] Re-enable Gradle build cache 2022-02-04 07:11:38 -05:00
Carter Jernigan 52b6382d47
Configure build with GitHub Actions 2022-01-26 15:13:19 -05:00
Carter Jernigan 40950a0377 [#169] Android Gradle Plugin 7.1
Besides bumping the version, we can now integrate this plugin the same way we do the others.  The version is now declared in the settings.gradle.kts.

The change is a bit noisy, due to needing to move our repository restrictions around.
2022-01-25 15:13:11 -05:00
Carter Jernigan d46cf8187c
[#145] Profile scaffold 2022-01-13 12:49:08 -05:00
Carter Jernigan eb550f680e [#166] Included build for SDK development
Note that the SDK master branch contains breaking API changes, which the Secant app hasn't yet been updated to support, so enabling an included build will have compile failures.
2022-01-04 16:20:37 -05:00
Carter Jernigan ee96e915ae
[#62] Wallet details scaffold
Implements a details screen showing various wallet addresses

Some known issues requiring followup in future pull requests:
 - #159 Colors for light theme have not been defined yet
 - #160 Color blocks have 2x borders along the top/bottom of the middle item
 - #161 Some address types display placeholder values
2021-12-31 08:28:16 -05:00
Carter Jernigan 205344c201
[#12] Home screen scaffold (#158)
This provides a very basic scaffold of the home screen and navigation to other child screens.  Additional work needs to be done in both the SDK and this app to build all of the functionality.  Specific known gaps
 - Displaying synchronization status to the user, pending full designs on the progress and animation behaviors
 - Improved APIs for listing and filtering transactions.  This is the issue in the SDK https://github.com/zcash/zcash-android-wallet-sdk/issues/242
 - Implement the UI for displaying transaction history
 - Display fiat currency values
 - Hook up buttons to navigate to other screens (scan #137, profile #145, send #134, request #135)
2021-12-29 14:38:14 -05:00
Carter Jernigan 5df93d2423
[#120] Coroutines 1.6.0
In addition to bumping the dependency version, also leverage the new coroutines testing APIs
2021-12-24 08:34:17 -05:00
Carter Jernigan 2e40af9390 [#17] Import wallet 2021-12-17 10:35:22 -05:00
Carter Jernigan 01a1177e9a [#125] Play Publisher 3.7.0 2021-12-16 15:00:41 -05:00
Carter Jernigan c34d2b1226 [#130] Test Orchestrator 1.4.1 2021-12-16 15:00:02 -05:00
Carter Jernigan 17c5c2ba6a [#148] Kotlin 1.6.10 2021-12-16 14:57:21 -05:00
Carter Jernigan 0ca63f9c75 [#121] Android Gradle Plugin 7.0.4 2021-12-11 08:16:45 -05:00
Carter Jernigan 4a07b2e0b9 [#14] Splash screen 2021-12-04 09:01:21 -05:00
Carter Jernigan 66750a58b1 [#88] Kotlin 1.6
Updating the Compose compiler must happen in lockstep with the Kotlin version, because they are tightly coupled

Kotlin 1.6 also fixes some annoying issues with Java 17, which will make first-time setup less error prone for new contributors
2021-12-03 08:16:24 -05:00
Carter Jernigan f738666cd2
[#42] Add app deployment process
This enables deployment to Google Play internal testing.

Note these changes cannot be fully tested until the signing and API keys are in place.  Non-deployed builds are continuing to work as expected (e.g. `./gradlew assemble`)
2021-12-02 15:18:17 -05:00
Carter Jernigan 010e1a857b
[#94] Update to Zcash SDK 1.3.0-beta19 2021-12-02 15:17:55 -05:00
Carter Jernigan 1d4048318c
[#87] Enable non-transitive R classes 2021-12-02 15:17:08 -05:00
Carter Jernigan 6567f6c18d
[#100] Update AndroidX dependencies 2021-12-02 15:16:52 -05:00
Carter Jernigan c457406bc3
[#98] Detekt 1.19.0 2021-12-02 15:16:34 -05:00
Carter Jernigan 8e9f8037c7 [#99] Ktlint 0.43.1 2021-12-01 15:24:34 -05:00
Carter Jernigan ec983f1f8f [#28] Initial SDK integration
This sets up the infrastructure needed to continue implementing the onboarding UI for create and import of wallets.  By fleshing out the global state management in the app now, we can better manage asynchronous IO to avoid blocking the UI.

This adds:

 - Load and persistence a wallet in encrypted preferences
     - The stored data is written as a single JSON object, as opposed to multiple entries, to ensure atomic writes
     - The data is versioned, so that we can change the JSON format readily in the future
 - Detection of application state, e.g. onboarding versus loading the user's wallet
 - Touch points to initialize the SDK
2021-11-12 07:09:43 -05:00
Carter Jernigan 0ba504fac1 [#78] Fix build on Apple Silicon 2021-11-10 11:38:20 -05:00
Carter Jernigan 3ede7ac8f0 [#59] Enable core library desugaring for app module
Note that if we want to run tests from each module on older Android versions, we would need to enable desugaring for each module that is using newer JDK features.  For now, this prevents the app itself from crashing on devices with older versions of Android
2021-11-09 13:53:20 -05:00
Carter Jernigan 7d305dc953 [#8] Restrict maven repositories
This improves security by ensuring that Google's dependencies only from the Google Maven repo.

A dependency on Jitpack has also been removed.
2021-10-19 14:42:30 -04:00
Carter Jernigan f3c425e68a [#31] Add injection of build info
Provides infrastructure to help us track exactly what build of the app is running.  This provides the ability to implement a number of features in the future
 - Displaying build version in an About screen
 - Automatically versioning with Git commit count as an incrementing version number
 - Injection of secrets, API keys, or other behaviors into the build so that the app can leverage them at runtime.  The secrets can be securely stored as environment variables (e.g. on CI), so they don't need to be committed to the repository.
2021-10-19 13:51:06 -04:00
Carter Jernigan c5f3a44340 [#13] Add initial preference infrastructure
This adds infrastructure to read/write preferences, with both a multiplatform wrapper and an Android-specific implementation.

This implementation is primarily designed to cover the initial needs of implementing the wallet SDK integration for issue #28 for securely storing keys (with encryption) for the user's wallet.
2021-10-19 09:26:03 -04:00
Carter Jernigan 33588e4e66 [#30] Explicitly set the Compose compiler version
Also bump the Compose dependency to 1.0.4, in order to support Kotlin 1.5.31
2021-10-19 07:20:38 -04:00
Carter Jernigan cfe0c47652 [#29] Fix viewmodel-compose artifact 2021-10-19 07:20:17 -04:00
Carter Jernigan bdc86a764d [#26] Android Gradle Plugin 7.0.3 2021-10-19 07:19:49 -04:00
Carter Jernigan 96b1e1913b [#21] Enable test orchestrator 2021-10-11 19:39:50 -04:00
Carter Jernigan 403f5d6467 [#15] Add ui-lib module 2021-10-09 10:36:58 -04:00
Carter Jernigan cec2ad260c [#9] Treat compiler warnings as errors 2021-09-22 12:43:43 -04:00
Carter Jernigan 7520e031c8 [#3] Add ktlint 2021-09-18 07:22:42 -04:00
Carter Jernigan 68a9cc7d27 [#3] Add skeleton Gradle project structure 2021-09-18 07:22:42 -04:00