* [#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.
- 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>
- Implementing regex solution for validation of input ZecAmount after confirm button is pressed.
- Added also unit tests for this new feature.
- Move necessary components from sdk-ext-lib to sdk-ext-ui module.
- Align implementation with comments form PR.
- Fix name of run configuration.
- Ensure consistent behavior of tests.
- 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.
- Includes Zip321UriBuildFixture for the toUri() method from the Rust layer.
- Includes Zip321UriParseFixture for the fromUri() method from the Rust layer.
- Added ZecRequestTest class for testing ZecRequest methods.
- Align Zip321UriBuildFixture and Zip321UriParseFixture parameters.
- Added comments to the new() methods of Zip321BuildFixture and Zip321ParseFixture.
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.
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
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.
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.
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
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)
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
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