blob: b8f19c036278a298e6cc594f1699e94ebe74d849 [file] [log] [blame]
package com.airbnb.lottie.sample.compose.showcase
import com.airbnb.lottie.sample.compose.api.AnimationsResponseV2
import com.airbnb.lottie.sample.compose.api.LottieFilesApi
import com.airbnb.lottie.sample.compose.dagger.AssistedViewModelFactory
import com.airbnb.lottie.sample.compose.dagger.DaggerMvRxViewModelFactory
import com.airbnb.mvrx.*
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import kotlinx.coroutines.Dispatchers
data class ShowcaseState(
val animations: Async<AnimationsResponseV2> = Uninitialized
) : MavericksState
class ShowcaseViewModel @AssistedInject constructor(
@Assisted initialState: ShowcaseState,
private var api: LottieFilesApi
) : MavericksViewModel<ShowcaseState>(initialState) {
init {
fetchFeatured()
}
private fun fetchFeatured() {
suspend {
api.getFeatured()
}.execute(Dispatchers.IO) {
copy(animations = it)
}
}
@AssistedFactory
interface Factory : AssistedViewModelFactory<ShowcaseViewModel, ShowcaseState> {
override fun create(initialState: ShowcaseState): ShowcaseViewModel
}
companion object : DaggerMvRxViewModelFactory<ShowcaseViewModel, ShowcaseState>(ShowcaseViewModel::class.java)
}