401 я вызываю
handler
.reject(InvalidRefreshTokenError(requestOptions: requestOptions));
Как получить эту ошибку в любом из BLoC и вызывать определенный метод одного из BLoC?
Мне это нудно чтобы принудительно логаутить юзера
Либо все блоки наследуются от BaseBloc в котором будет метод logout(), либо они все имеют ссылку на контейнерный блок с тем же методом, либо прокинуть навигатор прямо в интерцептор (можно через GlobalKey)
а есть примеры с GlobalKey?
Под рукой - нет. Но вкраце: заводится глобальный GlobalKey, он ставится навигатору в MaterialApp, и дёргается из любого места
есть инстанс ауфблока, есть коллбек от клиента в котором эмитится стейт разлогирования, завязываются в инициализаторе В самом интерцепторе только логика на рефреш и дергание коллбека на разлогирование
с ауфблока слушаем
Получается, что все остальные блоки должны будут как-то привязываться к этому ауфблоку. Потому что 401 может прийти на любой запрос
А зачем другим блокам в принципе знать об этой ошибко-логике? Придет на любой запрос, интерсептор обработает
Но я считаю именно такой подход архитектурно верным
Т.е. вызывать блок в интерцепторе?
Блоки не должны зависеть от блоков Вызывается через коллбек
Не соглашусь с тем, что "блоки не должны зависеть от блоков". Абстракции в виде коллбеков нужны только для переиспоользования. В самом простом исполнении можно спокойно один блок привязать к другому
"Считаю такой подход архитектурно верным" "Заводится глобальный ключ который завязывается на навигации" 🌚
Обсуждают сегодня