UNPKG

react-ketting

Version:
49 lines 1.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useResolveResource = void 0; const use_client_1 = require("./use-client"); const ketting_1 = require("ketting"); const react_1 = require("react"); /** * This is an internal hook that takes a 'ResourceLike', and turns it into * a real materialized resource. */ function useResolveResource(resourceLike) { const client = (0, use_client_1.useClient)(); const [resource, setResource] = (0, react_1.useState)(quickResolve(client, resourceLike)); const [error, setError] = (0, react_1.useState)(null); (0, react_1.useEffect)(() => { const newRes = quickResolve(client, resourceLike); if (newRes) { setResource(newRes); return; } Promise.resolve(resourceLike) .then(res => { setResource(res); }) .catch(err => { setError(err); }); }, [resourceLike]); return { resource, error, setResource, }; } exports.useResolveResource = useResolveResource; /** * Helper function that will immediately return a resource for a resourcelike, * but only if this can be done synchronously. */ function quickResolve(client, resourceLike) { if (typeof resourceLike === 'string') { return client.go(resourceLike); } if (resourceLike instanceof ketting_1.Resource) { return resourceLike; } return null; } //# sourceMappingURL=use-resolve-resource.js.map