@sanity/form-builder
Version:
Sanity form builder
45 lines (43 loc) • 1.34 kB
JavaScript
;
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;
}