* [#1440] Inject in-app-update information
* [#1415] What's new screen
Closes#1415
* [#1415] Code cleanup
Closes#1415
* [#1415] Test hotfix
Closes#1415
* Clear What’s New docummentation
* Improve parser logic
So it’s able to parse the first changelog entry or the first unfinished one (i.e. [Unreleased] entries only)
* Order alphabetically
* [#1440] About redesign
* Changelog update
* Use of small button style on About
- Primary button’s parameters have been slightly changed, too
* Add IN_APP_UPDATE_PRIORITY to gradle.properties
* Rename functions
To align with the existing pattern
* Sort alphabetically
* Add ChangelogFixture
* Create ChangelogFixture
* Move navigation from Android layer to Navigation
* Fix changelog parsing
This way, it will also work with `-` in the middle of the sentence. With such a solution, we need to ensure the `\n-` characters sequence in every changelog entry. But it’s replaced by the bullet character at the end. It will work for Google Play within in-app updates, as well.
---------
Co-authored-by: Honza <rychnovsky.honza@gmail.com>
* [#1417] Add authentication
- Closes#1417
- Closes#326
- Partially addresses [Electric-Coin-Company/zashi#7] too
- Creates reusable AuthenticationVM component with all necessary logic that reports authentication status to its callers
- Addresses authentication requirements for the Send funds, Delete wallet, Export private data, and Recovery phrase. The App access authentication use case is prepared and can be turned on anytime.
- The new logic also counts with possible future user customization via the app UI of the default on/off states for all implemented authentication use cases
- Send.Confirmation logic simplification
- This also adds the welcome screen (splash) animation to all the app entry points (the app recreation caused by system included)
* Allow unauthenticated access
- In case no authentication method is available on the device
* Build supported authenticators for the device
- Based on the device Android SDK version
* Disable broken screenshot testing
- This is a temporary change until #1448 is addressed
* Changelog update
* Add temporary placeholder screenshot test
To suppress no test error
- Addresses issue J from the security audit: Payment URI parser uses a test fixture address
- This also removes unused Request screen with its logic and tests
- Closes#1352
- Closes#1159
- Closes#1269
- Closes#1073
- Its direct follow-ups are #1294 and #1161
- Other follow up is #1260
- These changes also enable having two Primary buttons side-by-side
- This adds sorting history of transactions by a new calculated height after send done
- This also changes how we treat empty transaction dates from `-` to `` in UI
- Changelog update
- Closes#1235
- Note that failures and server saving success are reported to the UI with the Android system Snackbar or via the existing Textfield’s error bottom text until we define popup design as filed in #1242
- Changelog update
[#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
* [#1031] Export of private app data UI+logic
- Closes#1031
* [#1031] Export of private app data tests
* Move provider to app/manifest
To avoid: The application could not be installed: INSTALL_FAILED_CONFLICTING_PROVIDER
* [#1037] Debuggable release build
- So we’re able to log or debug release app build while testing
- Default value false
- Closes#1037
* Fix file provider path in release build
* [#946] Warning screen UI
[#946] Code review changes
moved security warning to separate folder
changed main heading text style
changed static version text to dynamic
Co-authored-by: Honza Rychnovský <rychnovsky.honza@gmail.com>
* [#993] New Primary Button Click Animation
* [#946] Warning Screen [UI][Logic][Tests]
- Security Warning screen incorporated into the app onboarding logic
- NeedsWarning wallet state persisted and is required if the user re-runs next time, and the Security Warning screen still needs to be presented
- Privacy Policy opened by part of the screen text clicking in an external web browser app
- Unit tests
- UI tests
- Screenshot tests
---------
Co-authored-by: Venkat-corebts <143575548+Venkat-corebts@users.noreply.github.com>
* [#664] Transaction history
* Move under the screens folder
* Fix Request screen Preview
* Add TODO link
* Improve Text design component
* HistoryView UI enhancing
* Adopt ZcashCurrency API
* Add transaction history sync state
* Compact time format
* Bump Compose Material Icons to v1.5.0-beta02
* Add support for pending and expired transactions
* Add progress in syncing with no transaction yet
* Screenshot test
* Simplified no transaction check
* Transaction history manual test case
* Home screen history button test
* Fix flow collecting
* View tests
* Sent transaction sign
* Remove unused transaction snapshot from VM
---------
Co-authored-by: Honza <rychnovsky.honza@gmail.com>
* [#751] AGP 7.4.2
* [#874][#758][#751] Gradle 8.1.1 + AGP 8.0.2
- Dependency locks update
- And the related changes the versions bump brings done as well
- Dep issue template changed as appropriate now
* [#875] Emulator.wtf 0.12.2
* Minor fixing changes after Gradle bump
* Fix deprecated Runtime.exec()
* Fix running screenshot tests
We use the same pattern now as in the other pure test modules.
* Fix jvm versions compatibility
'compileJava' task (current target is 1.8) and 'compileKotlin' task (current target is 17) jvm target compatibility should be set to the same Java version.
---------
Co-authored-by: Honza <rychnovsky.honza@gmail.com>
Because we’re making UI text changes, I’ve forked our views into “long” and “short” versions that preserve the previous experience while allowing the shorter experience to be different.
One limitation of the current approach is that the screenshot tests are limited to the current configuration, so there is some risk of ‘bit rot’ with the screenshot tests for the longer onboarding. For this PR, I manually switched the feature flags and re-ran the screenshot tests to make sure they still worked.
---------
Co-authored-by: Honza <rychnovsky.honza@gmail.com>
Twitter had a set of Compose rules, which have been forked into Detekt, Ktlint, and Android Lint implementations.
I see ktlint as mostly being formatting, Detekt being more for multiplatform static analysis, and Android Lint for Android-specific issues. Android lint is slow, so I didn’t want to use it as the first choice.
I went with the Detekt implementation which can be useful if we leverage multiplatform for our Composables in the future.
* [#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>
- Added automatic exception logging, registered in the Application object
- The design sends the exception to a second process, as the main process could be in a bad state when crashing. If we ever encounter problems with this design, it is easily toggleable to turn off with a boolean resource
- Reading the process name is a bit complex on older Android versions, so we leverage a ContentProvider (which runs prior to Application.onCreate()) to get the process name
- Added a simple logging mechanism for multiprocess and multithread log messages
- Refactored spackle-lib into spackle-lib (multiplatform) and spackle-android-lib
Co-authored-by: Honza <rychnovsky.honza@gmail.com>
* [#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>