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