Updating the Compose compiler must happen in lockstep with the Kotlin version, because they are tightly coupled
Kotlin 1.6 also fixes some annoying issues with Java 17, which will make first-time setup less error prone for new contributors
This enables deployment to Google Play internal testing.
Note these changes cannot be fully tested until the signing and API keys are in place. Non-deployed builds are continuing to work as expected (e.g. `./gradlew assemble`)
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
Note that if we want to run tests from each module on older Android versions, we would need to enable desugaring for each module that is using newer JDK features. For now, this prevents the app itself from crashing on devices with older versions of Android
Known issues
- We cannot use downloadable fonts with Compose, so the fonts must be embedded with the app
Questions
- How does the transparent button show a disabled state?
- Are the navigation buttons and secondary buttons supposed to be effectively the same style but one is smaller?
TODO
- Add gradients. Gradients are not implemented for background, progress bar, etc. Currently they simply use the start color for the gradient
- Icons are using Material Icons, pending decision on how to leverage the vectors in the design
- Add the border for hero images
- Add shapes for the callout, which is currently square
- Add padding
- Add drop shadows
- Double-check colors for correctness
This only locks dependencies for Gradle plugins, but not for all of the runtime dependencies that we might have. That will be accomplished in a followup change.