UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

53 lines (42 loc) 1.44 kB
import React from "react"; import { usePickFromState } from "@applicaster/zapp-react-native-redux/hooks"; import * as R from "ramda"; import { appStore } from "@applicaster/zapp-react-native-redux/AppStore"; export function getTargetScreenData( entry: ZappEntry, rivers: { [key in string]: ZappRiver }, contentTypes: ZappContentTypes ): ZappRiver { const entryType = entry?.type?.value; // Cant do mapping if entryType, rivers or content types is not defined if (!entryType || !rivers || !contentTypes) { return undefined; } const screenId = contentTypes?.[entryType]?.screen_id; if (!screenId) { if (entryType === "video") { return R.compose( R.find(R.propEq("plugin_type", "player")), R.values )(rivers); } if (entryType === "link") { return R.compose( R.find(R.propEq("type", "webview_screen_qb")), R.values )(rivers); } } return rivers?.[screenId]; } export function getTargetScreenDataFromEntry(entry: ZappEntry): ZappRiver { const { rivers, contentTypes } = appStore.get(["rivers", "contentTypes"]); return getTargetScreenData(entry, rivers, contentTypes); } export const useTargetScreenData = (entry: ZappEntry) => { const { rivers, contentTypes } = usePickFromState(["rivers", "contentTypes"]); return React.useMemo( () => getTargetScreenData(entry, rivers, contentTypes), [entry, rivers, contentTypes] ); };