mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
at samuel/exp-cli 28 lines 685 B view raw
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}