UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

51 lines (48 loc) • 1.35 kB
import { useNavigation } from "@react-navigation/native"; import { useCallback, useEffect, useRef, useState } from "react"; import { useOneRouter } from "../router/router.native.js"; function useLoadedNavigation() { var { navigationRef } = useOneRouter(); var navigation = useNavigation(); var isMounted = useRef(true); var pending = useRef([]); useEffect(function() { isMounted.current = true; return function() { isMounted.current = false; }; }, []); var flush = useCallback(function() { if (isMounted.current) { var pendingCallbacks = pending.current; pending.current = []; pendingCallbacks.forEach(function(callback) { callback(navigation); }); } }, [navigation]); useEffect(function() { if (navigationRef.current) { flush(); } }, [flush, navigationRef]); var push = useCallback(function(fn) { pending.current.push(fn); if (navigationRef.current) { flush(); } }, [flush, navigationRef]); return push; } function useOptionalNavigation() { var [navigation, setNavigation] = useState(null); var loadNavigation = useLoadedNavigation(); useEffect(function() { loadNavigation(function(nav) { return setNavigation(nav); }); }, [loadNavigation]); return navigation; } export { useLoadedNavigation, useOptionalNavigation }; //# sourceMappingURL=useLoadedNavigation.native.js.map