@applicaster/zapp-react-native-utils
Version:
Applicaster Zapp React Native utilities package
56 lines (49 loc) • 1.56 kB
text/typescript
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,
})
);
}
},
[]
);
};