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 isAtBookmarks: getTabState(state, 'Bookmarks') !== TabState.Outside,
13 isAtNotifications:
14 getTabState(state, 'Notifications') !== TabState.Outside,
15 isAtMyProfile: getTabState(state, 'MyProfile') !== TabState.Outside,
16 isAtMessages: getTabState(state, 'Messages') !== TabState.Outside,
17 }
18
19 if (
20 !res.isAtHome &&
21 !res.isAtSearch &&
22 !res.isAtFeeds &&
23 !res.isAtNotifications &&
24 !res.isAtMyProfile &&
25 !res.isAtMessages
26 ) {
27 // HACK for some reason useNavigationState will give us pre-hydration results
28 // and not update after, so we force isAtHome if all came back false
29 // -prf
30 res.isAtHome = true
31 }
32 return res
33 })
34}