Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel

open class BaseViewModel<T> : ViewModel() {
abstract class BaseViewModel<T> : ViewModel() {

fun uiState(): LiveData<T> = uiState
protected val uiState: MutableLiveData<T> = MutableLiveData()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ fun mockApi() =
.mock(
"http://localhost/recent-android-versions",
{ Gson().toJson(mockAndroidVersions) },
200,
1500
200, //에러 터트리려면 400이상 날려야함
150
)
)
Original file line number Diff line number Diff line change
@@ -1,13 +1,30 @@
package com.lukaslechner.coroutineusecasesonandroid.usecases.coroutines.usecase1

import androidx.lifecycle.viewModelScope
import com.lukaslechner.coroutineusecasesonandroid.base.BaseViewModel
import com.lukaslechner.coroutineusecasesonandroid.mock.MockApi
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import retrofit2.HttpException
import retrofit2.Response

class PerformSingleNetworkRequestViewModel(
private val mockApi: MockApi = mockApi()
) : BaseViewModel<UiState>() {

fun performSingleNetworkRequest() {

viewModelScope.launch {
uiState.value = UiState.Loading
uiState.value =
runCatching {
UiState.Success(mockApi.getRecentAndroidVersions())
}.getOrElse { throwable ->
when (throwable) {
is HttpException -> UiState.Error("${throwable.code()} : ${throwable.message()}")
else -> UiState.Error(throwable.message.toString())
}
}
}
}
}