@gravity-ui/data-source
Version:
A wrapper around data fetching
36 lines • 1.92 kB
JavaScript
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
var _excluded = ["queryFn", "refetchInterval"];
import { useMemo } from 'react';
import { useInfiniteQuery } from '@tanstack/react-query';
import { useRefetchInterval } from '../../hooks/useRefetchInterval';
import { normalizeStatus } from '../../utils/normalizeStatus';
import { composeOptions } from './utils';
var useInfiniteQueryDataOptions = function useInfiniteQueryDataOptions(composedOptions) {
var queryFnOption = composedOptions.queryFn,
refetchIntervalOption = composedOptions.refetchInterval,
restOptions = _objectWithoutProperties(composedOptions, _excluded);
var _useRefetchInterval = useRefetchInterval(refetchIntervalOption, queryFnOption),
queryFn = _useRefetchInterval.queryFn,
refetchInterval = _useRefetchInterval.refetchInterval;
return _objectSpread(_objectSpread({}, restOptions), {}, {
queryFn: queryFn,
refetchInterval: refetchInterval
});
};
export var useInfiniteQueryData = function useInfiniteQueryData(context, dataSource, params, options) {
var extendedOptions = composeOptions(context, dataSource, params, options);
var composedOptions = useInfiniteQueryDataOptions(extendedOptions);
var state = useInfiniteQuery(composedOptions);
var transformedData = useMemo(function () {
var _state$data$pages$fla, _state$data;
return (_state$data$pages$fla = (_state$data = state.data) === null || _state$data === void 0 ? void 0 : _state$data.pages.flat(1)) !== null && _state$data$pages$fla !== void 0 ? _state$data$pages$fla : [];
}, [state.data]);
return _objectSpread(_objectSpread({}, state), {}, {
status: normalizeStatus(state.status, state.fetchStatus),
data: transformedData,
originalStatus: state.status,
originalData: state.data
});
};
// #sourceMappingURL=hooks.js.map