1 | import { useContext } from 'react';
|
2 | import { useLazyQuery } from 'react-apollo';
|
3 | import { useShopConfig } from './useShopConfig';
|
4 | import { usePagination } from '../components/Pagination/PaginationProvider';
|
5 | import SortOrderContext from '../components/SortOrder/SortOrderContext';
|
6 | export 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 |
|
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 |
|
\ | No newline at end of file |