mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
1import {useEffect, useState} from 'react'
2import {useNavigation} from '@react-navigation/native'
3
4import {getTabState, TabState} from '#/lib/routes/helpers'
5
6export function useTabFocusEffect(
7 tabName: string,
8 cb: (isInside: boolean) => void,
9) {
10 const [isInside, setIsInside] = useState(false)
11
12 // get root navigator state
13 let nav = useNavigation()
14 while (nav.getParent()) {
15 nav = nav.getParent()
16 }
17 const state = nav.getState()
18
19 useEffect(() => {
20 // check if inside
21 let v = getTabState(state, tabName) !== TabState.Outside
22 if (v !== isInside) {
23 // fire
24 setIsInside(v)
25 cb(v)
26 }
27 }, [state, isInside, setIsInside, tabName, cb])
28}