@shopify/react-graphql
Version:
Tools for creating type-safe and asynchronous GraphQL components for React
42 lines (37 loc) • 910 B
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var async = require('@shopify/async');
var reactAsync = require('@shopify/react-async');
var backgroundQuery = require('../hooks/background-query.js');
function createAsyncQuery({
id,
load
}) {
const resolver = async.createResolver({
id,
load
});
function usePreload() {
return reactAsync.useAsync(resolver, {
assets: reactAsync.AssetTiming.NextPage
}).load;
}
function usePrefetch(options) {
const load = usePreload();
return backgroundQuery.useBackgroundQuery(load, options);
}
function useKeepFresh(options) {
const load = usePreload();
return backgroundQuery.useBackgroundQuery(load, {
pollInterval: 10000,
...options
});
}
return {
resolver,
usePreload,
usePrefetch,
useKeepFresh
};
}
exports.createAsyncQuery = createAsyncQuery;