UNPKG

tdc-js-modules

Version:

65 lines 2.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = require("react"); var react_relay_1 = require("react-relay"); /*const query: any = '';*/ /* const Qry: UseQuery<string[]> = () => { return {sort: null!} }; */ function useQuery(query, variables, config, environment) { if (config === void 0) { config = { onMount: false, initialValue: null, transformFunction: null, }; } var _a = react_1.useState(config.initialValue), data = _a[0], setData = _a[1]; var _b = react_1.useState(false), loading = _b[0], setLoading = _b[1]; var _c = react_1.useState(null), error = _c[0], setError = _c[1]; var _d = react_1.useState(false), trigger = _d[0], setTrigger = _d[1]; function fetchData() { /*setLoading(true);*/ setLoading(true); react_relay_1.fetchQuery(environment, query, variables) .then(function (data) { if (config.transformFunction) { setData(config.transformFunction(data)); } else { // @ts-ignore setData(data); } setLoading(false); }) .catch(function (err) { setData(config.initialValue); setError(err); setLoading(false); }); } var fetch = function () { setError(null); setLoading(true); setTrigger(true); }; react_1.useEffect(function () { if (config.onMount) { fetchData(); } }, [config.onMount]); react_1.useEffect(function () { if (trigger) { fetchData(); setTrigger(false); } }, [trigger]); return { data: data, loading: loading, error: error, fetch: fetch, setData: setData }; } function createUseQueryInstance(useQryFn, environment) { return function (query, variables, config) { return useQryFn(query, variables, config, environment); }; } exports.default = useQuery; //# sourceMappingURL=useQuery.js.map