package com.airbnb.lottie.samples.utils

import androidx.lifecycle.viewModelScope
import com.airbnb.lottie.samples.BuildConfig
import com.airbnb.mvrx.*
import kotlinx.coroutines.*

abstract class MvRxViewModel<S : MvRxState>(initialState: S) : BaseMvRxViewModel<S>(initialState, BuildConfig.DEBUG) {
    /**
     * This uses [Dispatchers.Main.immediate] by default to mimic [viewModelScope].
     */
    fun <T : Any?> (suspend () -> T).execute(
        dispatcher: CoroutineDispatcher = Dispatchers.Main.immediate,
        reducer: S.(Async<T>) -> S
    ): Job {
        setState { reducer(Loading()) }
        return viewModelScope.launch(dispatcher) {
            try {
                val result = invoke()
                setState { reducer(Success(result)) }
            } catch (e: CancellationException) {
                throw e
            } catch (e: Exception) {
                setState { reducer(Fail(e)) }
            }
        }
    }
}