UNPKG

relay-hooks

Version:
83 lines (67 loc) 2.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useOssFragment = void 0; var warning = require("fbjs/lib/warning"); var react_1 = require("react"); var relay_runtime_1 = require("relay-runtime"); var FragmentResolver_1 = require("./FragmentResolver"); var useForceUpdate_1 = require("./useForceUpdate"); var useRelayEnvironment_1 = require("./useRelayEnvironment"); function useOssFragment(fragmentNode, fragmentRef, suspense, name, subscribeResolve) { var environment = (0, useRelayEnvironment_1.useRelayEnvironment)(); var forceUpdate = (0, useForceUpdate_1.useForceUpdate)(); var ref = (0, react_1.useRef)(null); var maybeHiddenOrFastRefresh = (0, react_1.useRef)(false); if (ref.current === null || ref.current === undefined || maybeHiddenOrFastRefresh.current) { ref.current = { resolver: new FragmentResolver_1.FragmentResolver(name) }; maybeHiddenOrFastRefresh.current = false; } var resolver = ref.current.resolver; (0, react_1.useEffect)(function () { if (maybeHiddenOrFastRefresh.current == true) { forceUpdate(); } return function () { ref.current.resolver.setUnmounted(); maybeHiddenOrFastRefresh.current = true; }; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); (0, react_1.useEffect)(function () { return function () { resolver.dispose(); }; }, [resolver]); var fragment = (0, react_1.useMemo)(function () { return (0, relay_runtime_1.getFragment)(fragmentNode); }, [fragmentNode]); var idfragment = (0, react_1.useMemo)(function () { return (0, relay_runtime_1.getFragmentIdentifier)(fragment, fragmentRef); }, [fragment, fragmentRef]); (0, react_1.useEffect)(function () { resolver.subscribe(); return function () { resolver.unsubscribe(); }; }, [resolver, idfragment, environment]); resolver.subscribeResolve(subscribeResolve); resolver.resolve(environment, idfragment, fragment, fragmentRef); if (subscribeResolve) { return; } resolver.checkAndSuspense(suspense); resolver.setForceUpdate(forceUpdate); var data = resolver.getData(); if ('production' !== process.env.NODE_ENV) { if (fragmentRef != null && (data === undefined || Array.isArray(data) && data.length > 0 && data.every(function (data) { return data === undefined; }))) { process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Expected to have been able to read non-null data for ' + 'fragment `%s` declared in ' + '`%s`, since fragment reference was non-null. ' + "Make sure that that `%s`'s parent isn't " + 'holding on to and/or passing a fragment reference for data that ' + 'has been deleted.', fragment, name, name) : void 0; } } return [data, resolver]; } exports.useOssFragment = useOssFragment;