mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
1import {useNavigationState} from '@react-navigation/native'
2
3import {getTabState, TabState} from 'lib/routes/helpers'
4
5export function useNavigationTabState() {
6 return useNavigationState(state => {
7 const res = {
8 isAtHome: getTabState(state, 'Home') !== TabState.Outside,
9 isAtSearch: getTabState(state, 'Search') !== TabState.Outside,
10 // FeedsTab no longer exists, but this check works for `Feeds` screen as well
11 isAtFeeds: getTabState(state, 'Feeds') !== TabState.Outside,
12 isAtNotifications:
13 getTabState(state, 'Notifications') !== TabState.Outside,
14 isAtMyProfile: getTabState(state, 'MyProfile') !== TabState.Outside,
15 isAtMessages: getTabState(state, 'Messages') !== TabState.Outside,
16 }
17
18 if (
19 !res.isAtHome &&
20 !res.isAtSearch &&
21 !res.isAtFeeds &&
22 !res.isAtNotifications &&
23 !res.isAtMyProfile &&
24 !res.isAtMessages
25 ) {
26 // HACK for some reason useNavigationState will give us pre-hydration results
27 // and not update after, so we force isAtHome if all came back false
28 // -prf
29 res.isAtHome = true
30 }
31 return res
32 })
33}