Async state handling
Resource observer
Annotated the methods to run on each state with the following annotations:
@OnSucess(id="id")
@OnError(id="id")
@OnLoading(id="id")
Lets see an example for fetching a list of users
@BindViewModel
lateinit var thirdVm: MyViewModel
@ResourceObserver(id = "users")
lateinit var usersObserver: StateObserver<User>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
vm.liveData.observe(this, usersObserver)
vm.getUsers()
}
@OnSuccess(id = "users")
fun renderUsers(user: User) {
Log.d(TAG, "Render user: $user")
}
@OnError(id = "users")
fun renderError(t: Throwable) {
Log.d(TAG, "Show error")
}
@OnLoading(id = "users")
fun showLoading() {
Log.d(TAG, "Show loading")
}