В моей модели представления я использую что-то вроде этого -
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
, но я не знаю, как это сделать? Кто-нибудь может мне помочь с этим