The same as in the previous demo
- interceptor to get JSON response from the assets instead of WEB
- use RxJava3CallAdapterFactory to expose API as RxJava Singles and emulate network delays.
- Inter-features navigations with intents to the features activity destinations.
- Using androidx.constraintlayout.widget.Barrier to line up the items
- android:fitsSystemWindows="true" to obey safe area
- the UI is completely styled with the custom styles that are assigned to Material UI theme and custom attributes
- color selectors. Color selectors are used to change the presentation of enabled/disable state leveraging theme attributes.
- Domain level implemented as pure kotlin module and does not depend on Android platform. This way it can be shared with iOS/Web targets.
- Since the give JSON data prvides different id formats the entiry ID is abstracted to its own type implemented with Kotlins value classes https://github.com/s4ysolutions/effective-mobile-2/blob/main/data/src/main/java/com/example/effectivem2/data/dto/Id.kt
- DI implemented with Hilt for android modules and Dagger2 for pure kotlin ones
- For adding list of buttons with the questions dynamically the MaterialButton instances are created by code and its attributes are evaluated from the theme attributes.
- Using the room for saving favorites vacancies is over-endgeeniring but still applied for demo purposes. Alternatvie approach with Data was used in the previous demo
- For demo purposes different APIs are implemented with different technologies and the converted to each other
- Future from callback
- Future to suspended
- RxJava Single to Flow and StateFlow
- to translate an address to geo locations as an alternative to Yandex search API (i do not have API key)
- Use to show Leaflet map as an alternative to Yandex search API (i do not have API key)
- passing click form webview to android host
- call for an applicaiton able to show maps
- Localized plural forms for string