* Update the README for the Zashi Android repository.
This depends on [Electric-Coin-Company/zashi#1]
* Remove obsolete instructions from README.md
---------
Co-authored-by: Honza Rychnovský <rychnovsky.honza@gmail.com>
[#942] New Wallet Recovery Phrase Screen
[#1006] Enhance VersionInfo with other fields
[#947] About screen UI + logic + tests
[#1040] Extract logo and title on top of screens
- Place it into a separate UI component
- Used across several screens
- Closes#1040
Remove long version of the Backup screen
- We previously had a configuration field that controlled which version of the screen should be displayed to a user
- Removed
- Partly solves #1003
Backup screen view redesign
Tests + docummentation
Update links to the Zashi Github repository
As the GitHub repository was recently moved from Zcash under the ECC company
[#1014] Unify screen name with Figma design
[#1045] Adopt Zcash SDK v2.0.3
Closes#1045
Fix screenshot test
The new wallet recovery screen is now much taller; scrolling to the acting button is needed.
Fix Restore screen test
Lint tools warnings
This implementation is somewhat special from our other Gradle properties, because it does not get declared in the root gradle.properties. The reason is that included builds are supposed to have their own properties e.g.
root_project/gradle.properties
root_project/buildSrc/gradle.properties
root_project/build-conventions/gradle.properties
Instead of declaring the property in three different places which might lead to confusion, this leaves the property undeclared, with the Gradle scripts assuming a default value of true. The only time this is expected to be overridden is due to a workaround for an Android Studio bug.
- 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>
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
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.
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
In addition to the UI, this implements improved state management for the WalletViewModel which emits a sealed class now.
Work remaining for followup PRs:
- Use drag-and-drop for chips instead of dropdown menus #85
- Add red background color for test fail screen #86
- Add images for various screens (depends on #66#64)
- Implement copy to clipboard #49
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
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.