UNPKG

2.28 kBJavaScriptView Raw
1import { useContext } from 'react';
2import { useLazyQuery } from 'react-apollo';
3import { useShopConfig } from './useShopConfig';
4import { usePagination } from '../components/Pagination/PaginationProvider';
5import SortOrderContext from '../components/SortOrder/SortOrderContext';
6export const useRoutePreload = () => {
7 var _a, _b, _c;
8 const config = useShopConfig();
9 const routeQuery = (_b = (_a = config === null || config === void 0 ? void 0 : config.preload) === null || _a === void 0 ? void 0 : _a.routeQuery) !== null && _b !== void 0 ? _b : null;
10 const preloadComponents = (_c = config === null || config === void 0 ? void 0 : config.preload) === null || _c === void 0 ? void 0 : _c.preloadComponents;
11 const pagination = usePagination();
12 const sortOrderState = useContext(SortOrderContext);
13 const [runPreloadRouteQuery] = useLazyQuery(routeQuery, {
14 errorPolicy: 'all',
15 partialRefetch: true,
16 context: { useNetworkStatusNotifier: false }
17 });
18 const preload = ({ pathname, preloadRoute = true, routeType, variables = {} }) => {
19 // If the path targets an external link, it does not fetch
20 if (!preloadRoute || pathname.charAt(0) !== '/') {
21 return;
22 }
23 routeQuery &&
24 runPreloadRouteQuery({
25 variables: Object.assign({ path: pathname, first: (pagination === null || pagination === void 0 ? void 0 : pagination.perPage) || 24, offset: (pagination === null || pagination === void 0 ? void 0 : pagination.offset) || 0, orderBy: (sortOrderState === null || sortOrderState === void 0 ? void 0 : sortOrderState.sortOrder) || null, orderByDirection: (sortOrderState === null || sortOrderState === void 0 ? void 0 : sortOrderState.direction) || 'DESCENDING', filters: {
26 listFilters: [],
27 rangeFilters: [],
28 booleanFilters: [],
29 multiListFilters: []
30 } }, variables)
31 });
32 preloadComponents &&
33 preloadComponents[routeType] &&
34 preloadComponents[routeType].forEach(component => {
35 component.preload();
36 });
37 };
38 return { preload };
39};
40//# sourceMappingURL=useRoutePreload.js.map
\No newline at end of file