Android использует видовой запуск области с преобразованиями жизненного цикла - PullRequest
0 голосов
/ 10 ноября 2019

В моей модели представления я использую что-то вроде этого -

private val viewState = MainViewState()

    fun isUserLoggedIn() = Transformations.map(myUseCase.performUserAction()) {
        when (it) {
            is UserResult.Loading -> viewState.copy(loading = true)
            is UserResult.UserLoggedIn -> viewState.copy(
                loading = false,
                loggedIn = it.loggedIn
            )
            is UserResult.Error -> viewState.copy(loading = false, error = it.error)
            else -> viewState.copy(loading = false)
        }
    }

Моя модель представления расширяет модель BaseView, где я делаю что-то вроде этого -

open class BaseViewModel(private val coroutineCtx: CoroutineContext = Dispatchers.Main) :
    ViewModel(), CoroutineScope {

    private val job = SupervisorJob()

    override val coroutineContext: CoroutineContext
        get() = job + coroutineCtx

    override fun onCleared() {
        super.onCleared()
        coroutineContext.cancel()
    }
}

Это работает, как яне доволен этим подходом. Я хочу использовать viewModelScope.launch в моей модели представления вместе с Transformations.map, но я не знаю, как это сделать? Кто-нибудь может мне помочь с этим

...