You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Сразу к сути: идея в том, чтобы отвязать интерактор от роутера.
Ведь как известно интерактор не должен зависеть от внешних слоёв и внешних библиотек. То, что он знает о cicerone или о PIN_SCREEN - плохо.
Вместо этого, если уж возникла такая потребность, с ним следует работать как и с репозиториями (и с внешним миром вообще) через интерфейс, объявленный в слое домена. По сути интерфейс даже не должен представлять роутер, т.к. домен знать не знает, как в приложении реализована навигация. И такой уже есть в примере, это PinCodeListener.
Навскидку, в первом приближении это может выглядеть так. Вместо явного вызова роутера из интерактора:
Звучит хорошо. Давай оформим PR.
По поводу имплементации PinCodeListener. Можно где-то в presentation/navigation.
Я кстати обновлю инфо по пакетам за одно.
Проект крашится, ветка sample_2. Ругается на call adapter factory и response body converter. В build.gradle кроме самого ретрофита ничего нет, хотя точно нужен адаптер для rxjava2.
Я туда хоть смотрю? https://github.com/AndroidArchitecture/AuthCase/tree/sample_2
Сразу к сути: идея в том, чтобы отвязать интерактор от роутера.
Ведь как известно интерактор не должен зависеть от внешних слоёв и внешних библиотек. То, что он знает о cicerone или о PIN_SCREEN - плохо.
Вместо этого, если уж возникла такая потребность, с ним следует работать как и с репозиториями (и с внешним миром вообще) через интерфейс, объявленный в слое домена. По сути интерфейс даже не должен представлять роутер, т.к. домен знать не знает, как в приложении реализована навигация. И такой уже есть в примере, это
PinCodeListener
.Навскидку, в первом приближении это может выглядеть так. Вместо явного вызова роутера из интерактора:
реализуем PinCodeListener где-то в слое навигации (где, кстати?):
и прокидываем в домен как зависимость вместо роутера:
Всё. Изменения минимальны, но домен избавился от зависимости. Можно и на модули резать :).
Если моё предложение вам понравилось, могу заняться pull request'ом.
The text was updated successfully, but these errors were encountered: