UNPKG

@sanity/form-builder

Version:
45 lines (43 loc) 1.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useFeatureEnabled = useFeatureEnabled; var _operators = require("rxjs/operators"); var _rxjs = require("rxjs"); var _reactRx = require("react-rx"); var _client = _interopRequireDefault(require("part:@sanity/base/client")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var versionedClient = _client.default.withConfig({ apiVersion: '2022-03-07' }); var INITIAL_LOADING_STATE = { isLoading: true, enabled: true, features: [] }; /** * fetches all the enabled features for this project */ function fetchFeatures() { return versionedClient.observable.request({ url: "/features", tag: 'features' }); } var observable = fetchFeatures().pipe((0, _operators.shareReplay)()); function useFeatureEnabled(featureKey) { var featureInfo = (0, _reactRx.useMemoObservable)(() => observable.pipe((0, _operators.map)(features => ({ isLoading: false, enabled: features.includes(featureKey), features })), (0, _operators.startWith)(INITIAL_LOADING_STATE), (0, _operators.catchError)(err => { console.error(err); return (0, _rxjs.of)({ isLoading: false, enabled: true, features: [] }); })), [featureKey], INITIAL_LOADING_STATE); return featureInfo; }