Я создаю приложение React-Native + Redux + React-Navigation, в котором потоки аутентификации определены между SwitchNavigator
:
const UnauthStack = createStackNavigator({
SignIn: SignInScreen, SignUp: SignUpScreen
}, { initialRouteName: 'SignIn' })
const AuthStack = createBottomTabNavigator({
Home: HomeScreen, Profile: ProfileScreen
}, { initialRouteName: 'Home' })
export default createAppContainer(createSwitchNavigator({
AuthLoading: AuthLoadingScreen,
Unauth: UnauthStack,
Auth: AuthStack
}, { initialRouteName: 'AuthLoading' }))
Он просто отображает экран загрузки авторизации при поиске токена доступа: если пользователь сохранил его, перейдите к стеку Auth
, иначе перейдите к стеку Unauth
.
Пользователь использует сохраненный токен (носитель) для отправки авторизованных запросов к API внутри стека Auth
, и в какой-то момент этот токен больше не будет действительным. В этот момент я хочу заставить пользователя войти в систему.
Последний статус ответа отслеживается в моем редуксе store :
{
lastResponseStatus: 200,
oauth: { ... },
entities: { ... },
}
Вопрос:
Как программно перемещаться по пользователю для SignInScreen
(стек Unauth), когда lastResponseStatus
получает 401
?
Я думал о чем-то вроде глобального контейнера, подключенного к Auth-навигатору, который отображал бы состояние на реквизиты перед любым другим экраном.