Commit Graph

33 Commits

Author SHA1 Message Date
Carter Jernigan 8be473a988 [#335] Flank 22.03.0 2022-04-06 07:56:17 -04:00
Carter Jernigan 3c9331c3eb [#333] Update version catalog syntax 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
Honza Rychnovsky db13435d52
[#218] Prevent illegal number on ZEC amount
- Prevent illegal input in ZEC Send/Request form.
- New SDL-EXT-UI module for UI related SDK helper components.
- Regex for continuous validation of the entered ZEC amount.
- Added a new unit tests for validation of the regex too.
- Using the regex on ZEC Request and ZEC Send screens.
- Updated existing and created a new UI tests for validating entered ZEC amount values on Request and Send screens.
- Improve code to be validated with DetektAll static analyzation.
- Architecture documentation update with the newly added sdk-ext-ui module.
- Added run configuration sdk-ext-lib:connectedCheck for AS.
- Added check for digits count between grouping separators + tests.
- Refactoring test class name and its separator value.
2022-04-01 16:28:16 +02: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 f01c855ead [#225] Refactor design to separate module
This moves the theme and common UI elements to a separate Gradle module.

This is a first step towards creating our own custom design system, as it would eventually allow hiding of Material Design from the rest of the app UI.

As part of this change, a new common utility module was created so that both the ui and ui-design modules can depend on it.
2022-02-23 15:49:03 -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 a0dc85341b [#205] Gradle 7.4 2022-02-21 09:26:57 -05:00
Carter Jernigan a1199e706e
[#135] Request ZEC scaffold 2022-02-17 08:08:06 -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 2aba8fe33b
[#70] Generate screenshots automatically
Test Orchestrator must be enabled, so that screenshot generation can walk through the app like a newly registered user.  The screenshots are stored outside of the app's storage directory, so that Test Orchestrator does not delete them.  Because hard-coded paths are used, it is possible this could be brittle with future versions of Android

A future enhancement would be to also copy these screenshots off of tests run on Firebase Test Lab.  This would likely involve configuring Fladle/Flank with additional directories to pull.
2022-01-31 16:42:22 -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 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 4a07b2e0b9 [#14] Splash screen 2021-12-04 09:01:21 -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 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 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 575b3063bf
[#50] Preliminary design guide
Known issues
 - We cannot use downloadable fonts with Compose, so the fonts must be embedded with the app

Questions
 - How does the transparent button show a disabled state?
 - Are the navigation buttons and secondary buttons supposed to be effectively the same style but one is smaller?

TODO
 - Add gradients.  Gradients are not implemented for background, progress bar, etc.  Currently they simply use the start color for the gradient
 - Icons are using Material Icons, pending decision on how to leverage the vectors in the design
 - Add the border for hero images
 - Add shapes for the callout, which is currently square
 - Add padding
 - Add drop shadows
 - Double-check colors for correctness
2021-10-31 13:36:51 -04: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 96b1e1913b [#21] Enable test orchestrator 2021-10-11 19:39:50 -04:00
Carter Jernigan 1f5d7eb966 [#15] Add onboarding skeleton
This implements the logical flow between the onboarding stages, as well as nearly full test coverage of the flow.

There's a lot of followup work, especially to implement design styles.  It currently contains various placeholder values, e.g. lorem ipsum text and color blocks instead of images.  See #17
2021-10-11 12:38:46 -04:00
Carter Jernigan 403f5d6467 [#15] Add ui-lib module 2021-10-09 10:36:58 -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