UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

56 lines (49 loc) 1.56 kB
import * as ZappPipes from "@applicaster/zapp-react-native-redux/ZappPipes"; import { applyScreenRouteDefaults } from "@applicaster/zapp-react-native-redux/ZappPipes/feedProcessor"; import React from "react"; import { useScreenResolvers } from "../../actionsExecutor/screenResolver"; import { useRoute } from "../navigation"; import { useScreenStateStore } from "../navigation/useScreenStateStore"; import { useDispatch } from "react-redux"; export const useLoadPipesDataDispatch = () => { const screenStateStore = useScreenStateStore(); const resolvers = useScreenResolvers(); const dispatch = useDispatch(); const { pathname, screenData } = useRoute(); const riverId = (screenData as LegacyNavigationScreenData)?.targetScreen?.id ?? screenData?.id; const onLoadCB = (options) => (data, _err) => { options?.callback?.(); if (data) { applyScreenRouteDefaults(data, screenStateStore, pathname); } }; return React.useCallback( ( url: string, options = {}, { withResolvers = false, withScreenRouteMapping = false, }: { withResolvers?: boolean; withScreenRouteMapping?: boolean; } = {} ) => { if (url) { dispatch( ZappPipes.loadPipesData(url, { riverId, resolvers: withResolvers ? resolvers : undefined, ...options, callback: withScreenRouteMapping ? onLoadCB(options) : options?.callback, }) ); } }, [] ); };