Реализовано вторая часть ДЗ по сетям.#35
Реализовано вторая часть ДЗ по сетям.#35uatilman wants to merge 22 commits intoAndroid-Developer-Basic:masterfrom
Conversation
| _state.emit(LoadAddressesViewState.AddressSelected) | ||
| } | ||
|
|
||
| fun loadAddressVariants(rawAddress: String) { |
There was a problem hiding this comment.
При быстром вводе запускаются множественные запросы, предыдущие не отменяются. Это создает лишнюю нагрузку, и может привести к страшной и ужасной гонки. Добавьте переменную searchJob и отменяйте предыдущий запрос через searchJob?.cancel() перед запуском нового. И можно уменьшить количество запросов через delay
There was a problem hiding this comment.
Добавил отмену job, а задержку вынес в property файл
|
|
||
| is LoadAddressesViewState.LoadAddresses -> { | ||
| addressVariants.isVisible = false | ||
| loadIndicator.isVisible = false |
There was a problem hiding this comment.
Лучше обработать тут наш it и вывести пользователю информацию если ошибка
There was a problem hiding this comment.
Добавил поле для вывода ошибки.
| println("addressVariants: \n${addressVariants.joinToString("\n")}") | ||
| _state.emit(LoadAddressesViewState.Content(addressVariants)) | ||
| }.getOrElse { | ||
| _state.emit(LoadAddressesViewState.LoadAddresses(it as Exception)) |
There was a problem hiding this comment.
Лучше использовать безопасно as? Exception
| private fun setupRecyclerView() = binding.withBinding { addressVariants.adapter = adapter } | ||
|
|
||
| private fun collectToSelectedFlow() { | ||
| viewModel.state.onEach { |
There was a problem hiding this comment.
Создает новую подписку на addressFlow при каждом изменении state. Подпишитесь на addressFlow отдельно, без вложености
| import jakarta.inject.Inject | ||
| import ru.otus.basicarchitecture.service.DaDataService | ||
|
|
||
| @ViewModelScoped |
There was a problem hiding this comment.
аннотация области видимости на интерфейсе не влияет на создание экземпляров. Область видимости задается на методе @BINDS в модуле.
Добрый день!
Что касается сетей, все реализовано. Однако скорее всего проблемы с Hilt. Все работает, но не понял как сделать addressSuggestUseCase unscope, как написано в лекции.