UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

61 lines (45 loc) 1.84 kB
import { useContext, useMemo } from "react"; import { useModalNavigationContext } from "@applicaster/zapp-react-native-ui-components/Contexts/ModalNavigationContext"; import { useNestedNavigationContext } from "@applicaster/zapp-react-native-ui-components/Contexts/NestedNavigationContext"; import { useNavigation } from "../navigation/useNavigation"; import { ScreenContext } from "@applicaster/zapp-react-native-ui-components/Contexts/ScreenContext"; import { ScreenDataContext } from "@applicaster/zapp-react-native-ui-components/Contexts/ScreenDataContext"; export function useScreenContextV2() { return useContext(ScreenContext); } /** * Equivalent to existing useNavigation().screenData * @returns legacyFormatScreenData - screen configuration */ export function useLegacyScreenData() { const { legacyFormatScreenData } = useScreenContextV2(); return useMemo(() => legacyFormatScreenData, [legacyFormatScreenData]); } export function useNavbarState() { const { navBar: { title, summary, visible }, } = useScreenContextV2(); return useMemo( () => ({ title, summary, visible }), [title, summary, visible] ); } export function useSetNavbarState() { const { navBar: { setSummary, setTitle, setVisible }, } = useScreenContextV2(); return useMemo( () => ({ setSummary, setTitle, setVisible }), [setSummary, setTitle, setVisible] ); } export function useScreenContext(): NavigationScreenData { const navigator = useNavigation(); const screenData = useContext(ScreenDataContext); const modalScreenData = navigator?.modalData; const isModal = useModalNavigationContext(); const isNested = useNestedNavigationContext(); if (isModal && modalScreenData) return modalScreenData; if (isNested && screenData?.nested) return screenData?.nested; return screenData; }