#android #kotlin #mvvm #kotlin-coroutines
Вопрос:
Я пытался создать сетевой ресурс, но я не хочу сохранять его в базе данных (например, в комнате). поэтому я создаю вспомогательную функцию в lambda, которая отображает ресурс из запроса API в репозитории.
inline fun <T> fetchFromServer(
crossinline fetch: suspend () -> Flow<ApiResponse<T>>
): Flow<Resource<T>>{
return flow {
emit(Resource.Loading())
when (val apiResponse = fetch().first()) {
is ApiResponse.Success -> {
emit(Resource.Success(apiResponse.data))
}
is ApiResponse.Empty -> {
emit(Resource.Error("Empty data", null))
}
is ApiResponse.Error -> {
emit(Resource.Error(apiResponse.errorMessage, null))
}
}
} as Flow<Resource<T>>
}
в моем репозитории я вызываю функцию
override suspend fun doLogin(param: Map<String, String>): Flow<Resource<SimpleModelDomain>> {
val fetch = fetchFromServer {
dataSource.doLogin(param)
}
return fetch.toDomain()
}
почему функция fetchFromServer{}
не может работать при срабатывании doLogin ()?. или есть другой способ создать сетевой ресурс, но пропустить сохранение в БД?