/// import * as React from "react"; import { Text } from "react-native"; import * as R from "ramda"; import { GeneralContentScreen } from "../../GeneralContentScreen"; import { ScreenResolver } from "@applicaster/zapp-react-native-ui-components/Components/ScreenResolver"; import { utilsLogger } from "@applicaster/zapp-react-native-utils/logger"; import { useNavbarState, useSetNavbarState, } from "@applicaster/zapp-react-native-utils/reactHooks/screen/useScreenContext"; import { useRivers } from "@applicaster/zapp-react-native-utils/reactHooks/state"; type Props = { screenId: string; screenData: ZappRiver | ZappEntry; feedUrl?: string; feedData?: PipesDataObject["data"]; extraProps?: any; screenResolverExtraProps?: any; componentsMapExtraProps?: any; isInsideContainer?: boolean; extraAnchorPointYOffset: number; river?: ZappRiver | ZappEntry; }; export const River = (props: Props) => { const { screenId, feedData, extraProps, screenResolverExtraProps, componentsMapExtraProps, isInsideContainer, extraAnchorPointYOffset, } = props; const { title: screenTitle, summary: screenSummary } = useNavbarState(); const { setTitle: setScreenTitle, setSummary: setScreenSummary } = useSetNavbarState(); const rivers = useRivers(); const river = React.useMemo(() => rivers?.[screenId], [screenId]); const screenData = React.useMemo( () => props.screenData || props.river || river, [screenId] ); const stringOrEmpty = (value: string | number | undefined): string => R.isNil(value) ? "" : String(value); React.useEffect(() => { if (!isInsideContainer) { setScreenTitle(stringOrEmpty(screenData?.title)); setScreenSummary(stringOrEmpty(screenData?.summary)); } }, [screenData.id]); React.useEffect(() => { if (feedData && !isInsideContainer) { if (feedData.title && feedData.title !== screenTitle) { setScreenTitle(stringOrEmpty(feedData.title)); } if (feedData.summary && feedData.summary !== screenSummary) { setScreenSummary(stringOrEmpty(feedData.summary)); } } else { setScreenTitle(stringOrEmpty(screenData?.title)); setScreenSummary(stringOrEmpty(screenData?.summary)); } }, [feedData, screenData, screenTitle, screenSummary]); if (!river) { utilsLogger.error({ message: `River ${screenData.id} not found!`, data: { screenData, feedData }, }); return `River ${screenData?.id} not found!`; } if (river.type !== "general_content") { const extraData = { ...R.mergeRight(extraProps, screenResolverExtraProps) }; return ( ); } return ( ); };