TL; DR
Учитывая новые рекомендации относительно экрана запуска и начала навигации по пункту назначения, как нам элегантно интегрировать логику входа в приложение для Android, используя Jetpack Navigation и RxJava?
В соответствии с Принципами навигации в моем приложении должен быть фиксированный начальный / выходной экран. Назовем это HomeScreen.
Учитывая, что доступ к этому экрану предоставляется только пользователям, выполнившим вход (как и все другие экраны, кроме LoginFragment
), где и как мне разместить логику, чтобы проверить, «выполнил ли пользователь вход в систему? Нет, перейти к LoginFragment
»?
Мое приложение разделено на слои (луковая архитектура). У меня есть SessionManager
POJO, введенный в мой Remote layer
, содержащий токен и другую информацию, связанную с сеансом, используемую в Remote layer
. У меня также есть UserRepository, используемый в моем случае использования LoginUser, который будет заполнять / обновлять SessionManager
.
Я не хочу, чтобы каждый вариант использования или каждый докладчик проверяли, вошел ли пользователь в систему, поскольку это не их забота (верно?). Когда и как я должен проверить, что мой пользователь вошел в систему? В MainActivity
держится навигационная составляющая? Как я могу правильно изменить навигацию, когда я использую RxJava (поэтому ответ на проверку асинхронный)?
Вопросы
Должен ли я сделать это в SplashScreen / Launcher? Должен ли этот Launcher быть отдельным действием (конфликт с новым Рекомендация по отдельным действиям), или это должно быть частью моей навигации? Должен ли я выполнять проверки в моем приложении OnCreate и отложить запуск своей MainActivity? Должен ли каждый докладчик составлять сценарии использования, сначала задавая вопрос «Я вошел в систему?» тогда "делать что-нибудь"?
Спасибо !