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