Проблема в том, что я не смог получить ответ, используя LiveData и Courotine в viewModel. Возможно, я не знаю правильный способ сделать это. Вызов
interface AuthApiService {
@POST("v2/5e3cba6a2d00008709d958d0")
@FormUrlEncoded
suspend fun login(
@Field("username") username: String,
@Field("password") password: String
): Response<AuthToken>
}
Репозиторий
class AuthRepository
@Inject
constructor(
val authApiService: AuthApiService
) {
suspend fun login(username: String, password: String) = liveData {
emit(GenericResult.Loading(null))
try {
emit(GenericResult.Success(authApiService.login(username, password)))
} catch (ioException: Exception) {
emit(GenericResult.Error(ioException))
}
}
}
Я пытаюсь сделать в viewmodel,
viewModelScope.launch {
val result = authRepository.login(username, password)
when (result.value) {
is GenericResult.Loading -> isLoading.postValue(true)
is GenericResult.Success -> authToken.postValue((result.value as GenericResult.Success<Response<AuthToken>>).data.body())
is GenericResult.Error -> onMessageError.postValue((result.value as GenericResult.Error).exception)
}
}
И он не работает. Не могли бы вы сказать мне, что я делаю не так? Спасибо