UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

64 lines (57 loc) 1.74 kB
import { useAppDispatch, ZappPipes, } from "@applicaster/zapp-react-native-redux"; 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"; export const useLoadPipesDataDispatch = () => { const screenStateStore = useScreenStateStore(); const resolvers = useScreenResolvers(); const dispatch = useAppDispatch(); 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: { callback?: (data: unknown, error?: Error | null | undefined) => void; riverId?: string; clearCache?: boolean; silentRefresh?: boolean; parentFeed?: string; } = {}, { 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, }) ); } }, [] ); };