хорошо или плохо хранить Presenter/Interactor/Repository в рамках одного Scope?
Обычно Interactor и, особенно Repository предполагают переиспользование. Поэтому их лучше хранить в каком-то более долгоживущем скопе.
Иногда у Repository нужно хранить состояние, которое будет различно на разных экранах (например, пагинация). Аналогично Interactor и Presenter иногда могут иметь состояния, различные на разных экранах. В таком случае на сколько правильно на каждый из экранов создавать свой скоуп, который будет переживать смену конфигурации? Думал изначально сделать именно так, но прочитал статью Мацюка, где сказано про три уровня скоупа (глобальный, фичи и экрана (без переживания смены кофнфигурации)), поэтому решил обратиться к чатику
Обычно не очень хорошо хранить состояние в интеракторе или, тем более, репозитории. Могут быть интеракторы, через которые шарятся данные между фрагментами. Тогда он живёт в скопе активити. Но это особый случай, когда интерактор строго привязан к одному какому-то user flow. Состояние той же пагинации лучше хранить в презентере. Если использовать какие-нить lifecycle friendly библиотеки типа moxy, то там презентер переживает перевороты экрана и состояние не пропадает.
а чем плохо хранить состояние в репозитории?
Если репозиторий шарится между разными фичами, то это может привести к неприятным последствиям. Состояние надо как-то занулять, актуализировать. Либо при каждом использовании нужно создавать свой инстанс репозитория.
наверное, мы с вами про разные состояния говорим)
Так если у каждого экрана свой Scope как раз для того, чтобы корректно хранились состояния - все норм должно быть
Обсуждают сегодня