Move SDK from the root gradle project to its own Gradle module
Move the demo app to be a peer of the SDK
This will simplify integration with CI on Bitrise.
The project was including a bad version of NotNull and this resulted in errors that were very hard to troubleshoot because the failure happened during annotation processing so Dagger could not even generate the code that the rest of the app relied upon. It was a mess. Fixed by removing the useless NotNulls and being a little more conservative on dependencies.
* Clear the warns build
* Supress inline CurrencyFormatter.kt and Twig.kt
Add FlowPreview into bulild.grandle
Minor change
* Add supres inline at the file level
* Add suppress inline at the file level
Previously, we just relied on implicit support given that x86 is compatible with both 32 bit and 64 bit systems but going forward, the Play Store will reject these builds, EVEN FOR INTERAL TESTS. This addresses that but it comes with other considerations. arm64 and x86_64 are only supported on Android for API 21+. We probably should structure our resource folders differently to reflect this nuance. Our supported versions are: API 16+ for 32-bit hardware and API 21+ for 64-bit hardware, unless its 64-bit arm which is backward compatible with our 32-bit arm code. Clear as mud, right? I'll add this verbiage somewhere.
Addresses some of the concerns in https://github.com/zcash/zcash-android-wallet/issues/39 by removing the side effects from the Intializer. Now instead of trying to help with loading and persisting wallet birthdates, it delegates that utility to another class.
This involves splitting code to run in the zcashMainnet and zcashTestnet flavors and using the corresponding feature of librustzcash. Mainnet functionality is proven in the integration test in androidTestZcashmainnet.
- Convert status flags into stream of statuses, instead.
- Improve logging during transaction submission
- Database corrections. Aparently Room has gotten more strict with schema parsing and this required lots of corrections mainly around get nullability correct for DB fields.
- Simplify Synchronizer creation via constructor functions. Created one function for maximum simplicity and another for maximum flexibility.
- Changed logic for Wallet initialization to simplify dependencies and allow for optional access to private keys for wallet apps
- Created TransactionRepository that leverages the paging library for Room
- Provided sample implementation of bridging to a key manager in a way where wallet apps do not have to modify their existing code.
- Made it easier to clear the wallet data that can be repopulated from the blockchain
- Allowed for better cleanup of heavy-weight lightwalletd services by adding a shutdown API call
These changes largely reduce the amount of configuration that can be tweaked in order to prevent fragmentation of the anonymity set of users. If wallet makers change certain properties than it can become easy to detect which network requests are coming from which client. The goal is for clients to be as anonymous as possible.
- Correct typo and compiler warning in Rust.
'trait objects without an explicity dyn' are deprecated and this is a warning as of Rust 1.37
- update dependencies
- update documentation
docs