///
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 (
);
};