ну, слишком умное все получается потом сидишь и репу чешешь, когда пытаешься решить, где ту или иную логику хранить (а ведь взаимодействие двух репозиториев - логика)
Так то репозиторий это тоже логика Логика получения данных
Вот не понимаю как правильно решить следующую задачу. Задача выдуманная чтобы упростить Итак нужно чтобы экран показывал список категорий (для облегчения задачи представим что список категорий конечный и небольшой… скажем 50 шт и из АПИ мы получаем их разом) При нажатие на категорию в списке элемент должен раскрываться и показывать список книг из этой категории (так же список конечный и небольшой ) Далее по каждой книге нужно послать запрос в API чтобы получить детальную информацию и соответсвенно отобразить в списке ее. Так же пока исключим кэширование результатов для облегчения.
Пока я вижу только следующее решение 1) При открытие экрана ViewModel запрашивает у интерактора список категорий (каждая категории уже содержит в себе список книг ) 2) Интерактор у репозиторий запрашивает данные и возвращает нам список в ViewModel 3) ViewModel пихает список в LiveData на которую подписан fragment и он пихает данные в адаптер RecyclerView 4) Нажимаем на категорию и по событию фрагмент говорит ViewModel что нужно открыть категорию 5) ViewModel постит в LiveData тот же список только нажатая категория помечена уже как открытая 6) Сразу после этого VIewModel запрашивает детальную информацию по книгам у интерактора 7) Интерактор возвращает flow и запрашивает параллельно у репозитория информацию о книгах и при получение деталей начинает иммитить данные в flow 😍 ViewModel получая данные обновляет список и постит в LiveData
Не слишком замудрил ? Можно как-то проще сделать ? Я правильно понимаю что при использование DiffUtil у меня не должно быть проблем с тем что весь список будет прилетать кучу раз в адаптер ?
Привет! Подскажите, пожалуйста, при MVP допускается ли осуществлять переключение на главный поток (для выполнения функции) во фрагменте, а не в презентере? Или это плохая практика?
Привет! Подскажите, пожалуйста, при MVP допускается ли осуществлять переключение на главный поток (для выполнения функции) во фрагменте, а не в презентере? Или это плохая практика?
Вообще поезентер по умолчанию должен работать в main потоке, потому что в нем хранится логика для управления ui
Привет! Подскажите, пожалуйста, при MVP допускается ли осуществлять переключение на главный поток (для выполнения функции) во фрагменте, а не в презентере? Или это плохая практика?
Мне кажется, это неправильно. View (fragment) вообще не должен ничего знать про потоки и асинхронщину, это не его зона ответственности.