mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
at verify-code 27 lines 682 B view raw
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}