Страницы

Поиск по вопросам

пятница, 12 июля 2019 г.

Как организовать di для вызова usecase из Interceptor-а

Всем привет, у меня проект на чистой архитеркторе и появилась задача разлогинивания пользования и выклидывания на экран входа в случае, если в ответ на запрос приходит 401.
Разлогинивание релизовано отдельным UseCase, который должен быть вызван из интерактора.
Из-за этого появляется проблема циклической зависимости: Interceptor -> UseCase -> Repository -> Retrofit -> Okhttp -> Interceptor.
Может, есть у кого мысли как сделать не костыльное решение?


Ответ

Действительно ли вам необходимо отправлять запрос подписанный устаревшим токеном после того, как пользователь получил ошибку 401? Мне этот момент кажется странным.
Один из стандартных подходов заключается в том, что вы используете разные объекты для доступа к авторизованной и не авторизованным зонам. В таком случае, вы можете сделать необходимый запрос, используя объект не авторизованной зоны и отправить пользователя на экран логина (локально). По ссылке вы можете ознакомиться с деталями: https://github.com/AndroidArchitecture/AndroidArchitectureBook/blob/master/cases/auth/Auth_article.md
Случай, в котором устаревший токен нужно обновить без взаимодействия с пользователем также описывается в примере.

Комментариев нет:

Отправить комментарий