Commit Graph

27 Commits

Author SHA1 Message Date
Honza Rychnovský cf45a0ef34
[#942] New Wallet Recovery Phrase Screen
[#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
2023-11-23 10:00:13 +01:00
Carter Jernigan ec7eb3804e [#770] Hide request ZEC button 2023-02-21 12:50:31 -05:00
Carter Jernigan 417fc4b8a5 [#764] Android Remote Config implementation
Note that there is no cloud integration yet. This creates the abstractions to support injecting different remote config sources
2023-02-21 12:50:31 -05:00
Carter Jernigan 6b202e3c9f [#764] Multiplatform remote config API 2023-02-21 12:50:31 -05:00
Carter Jernigan f5e0af6545
[#757] Adopt SDK 1.14.0 (#759) 2023-02-17 06:05:23 -05:00
Honza Rychnovsky 2b899a7200
[#682] Testing Documentation Update
* [#682] Testing documentation update

* Bump benchmark dep to 1.2.0-alpha8

* Simplify ui-benchmark-test module build types

* Add referential benchmark test results

* Code clean
2022-12-22 15:42:52 +01:00
Honza Rychnovsky bcacf93a04
[#599] Macrobenchmark test module
* Temporary enable FTL test

* Enable emulator.wft tests for ui-integration-test module on CI

* Rebase onto main

* Test Fladle configuration for ui-integration-test module

* Fix Fladle for ui-integration-test module

* Rename ui-integration-test module flade configuration

* Disable again FTL action from PRs

* Clear support for FTL from ui-integration-test module

* Refactor the emulator.wtf support across our modules.

* [#599] Macrobenchmark test module

- Created new dedicated macrobenchmark test module
- Updated related Architecture and Setup documentation
- Connected to app module
- New benchmark build type
- Related run configuration above custom Gradle task
- Basic startup benchmark test included

* Benchmark build variant simplification

* Run benchmarking simplification

* Documentation update.

* New property IS_SIGN_RELEASE_BUILD_WITH_DEBUG_KEY

- It enables signing the release build with debug key configuration. Default value is false.
- First, we check if we can sign it with release configs, otherwise with debug.
- Documentation updated.

* Benchmarking documentation update

* Adds support for Android SDK 32 and 33

- Bumped benchmark library to the latest alpha version
- Which results in a need of adding profile-installer library in target module (app)
- Now we're able to run benchmarking on Android SDK level 29 and higher (i.e. latest levels included)
- Updated related documentation

* Enables benchmarking for emulators

- I've decided to support emulator devices with our benchmark test module at the end. Documentation and code comments explain to a user that the results may not be the same as on a real physical device. But until we have it set up in CI, we can benefit from having it set up like this.
2022-10-27 12:51:24 +02:00
Honza Rychnovsky 4eddf4e74b
[#598] Refactoring ScreenshotTest to a separate test module
* Temporary enable FTL test

* Enable emulator.wft tests for ui-integration-test module on CI

* Test Fladle configuration for ui-integration-test module

* Fix Fladle for ui-integration-test module

* Rename ui-integration-test module flade configuration

* Disable again FTL action from PRs

* Clear support for FTL from ui-integration-test module

* Refactor the emulator.wtf support across our modules.

* [#598] Refactoring ScreenshotTest to a separate test module

- Created a new com.android.test module
- Moved our ScreenShotTest to the separate module
- Enabled the new module for emulator.wtf service
- Cleaned up the app module from ScreenShotTest
- Updated Architecture and Setup documentation

* Exclude pure test modules from Detekt check

* Improved run configurations

- Changed common emulator.wtf run configuration name to align with the rest of our configurations
- Added configuration for the new screenshot tests module
- Updated documentation

* Linked code TODO

* Disabled self-instrumenting

- As it appeared to be the way how to leverage the app module Gradle settings in this new module
- App name is taken from app module settings
- Screenshot tests works with pseudolocales again
2022-10-18 15:08:36 +02:00
Honza Rychnovsky bffa5870b6
[#525] Refactoring Integration Test Module
* [#525] Refactoring Integration Test Module

- Change module type to test + related Gradle scripts change
- Rename module to - remove the trailing Lib suffix + documentation
- Move module structure from test to main source

* Static checks result fix

* Temporary enable FTL test

* Test updated emulator.wft version

* Update locked emulator.wtf dependency version

* Enable emulator.wft tests for ui-integration-test module on CI

* Fix enable emulator.wft tests for ui-integration-test module on CI

- Update documentation

* Test Fladle configuration for ui-integration-test module

* Fix Fladle for ui-integration-test module

* Rename ui-integration-test module flade configuration

* Disable again FTL action from PRs

* Clear support for FTL from ui-integration-test module

* Refactor the emulator.wtf support across our modules.

* Fix Mermaid graph syntax

* Minor change in comment

* Fix ui-integration-test module run configuration

- Fixed manually
- Aligned with other run configurations
- Stable and beta versions of AS behave differentially, but after this fix it seems to be working as expected in both

* Update emulator.wtf run configuration

- Covered ui-integration-test module too
- Changed configuration name
2022-10-14 14:17:15 +02:00
Carter Jernigan 1ce826e453 [#464] Use Kover for multiplatform coverage 2022-06-06 08:41:01 -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 9267e75cb8
[#303] Write crash logs on external storage (#429)
- 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>
2022-05-31 12:38:02 -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 2e42e132a2
[#231] Repackage classes to `co.electriccoin.zcash`
The sdk-ext module is not repackaged, because the SDK itself uses the cash.z.ecc.sdk package name
2022-03-08 14:05:03 -05:00
Carter Jernigan d410d62f64
[#224] Add module dependency diagram
Also fixed a typo in the documentation, as `build-conventions` was renamed to `build-convention` a few weeks ago to accomodate included builds
2022-03-02 19:48:07 -05:00
Carter Jernigan 3d4f9fb4b4
[#142] Send ZEC scaffold (#253)
Implements a basic scaffold for sending ZEC.

Some new model objects and an extension method were added that I hope to move to the SDK.

Followup issues include
 - Press-and-hold for the Send button #249
 - Prevent illegal input in input form #218
 - Prevent undefined behavior if locale changes #217
 - Add error handling to the Zec send screen #250
 - Add confirmation after send is created #252
2022-03-01 08:11:23 -05: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 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 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 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 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 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
Carter Jernigan 740044a7cd [#2] Add project documentation and templates 2021-09-13 15:58:20 -04:00