UNPKG

@selfcommunity/react-core

Version:

React Core Components useful for integrating UI Community components (react-ui).

36 lines (35 loc) 1.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = require("react"); const SCPreferencesProvider_1 = require("../components/provider/SCPreferencesProvider"); /** * Custom hook preferences and features at the same time * @param preferences - array of preference keys * @param features - array of feature keys * @returns boolean - true only if all preferences and features are enabled * * Ex. * const isEnabled = useSCPreferencesAndFeaturesEnabled( * [ * SCPreferences.CONFIGURATIONS_POST_USER_ADDRESSING_ENABLED, * SCPreferences.CONFIGURATIONS_SCHEDULED_POSTS_ENABLED * ], * [SCFeatureName.TAGGING] * ); */ function useSCPreferencesAndFeaturesEnabled(preferences, features = []) { const { preferences: preferencesContext, features: featuresContext } = (0, SCPreferencesProvider_1.useSCPreferences)(); return (0, react_1.useMemo)(() => { // Check available context if (!preferencesContext || !featuresContext) { return false; } // Check every preferences const preferencesEnabled = preferences.every((key) => key in preferencesContext && preferencesContext[key].value); // Check every features const featuresEnabled = features.every((feature) => featuresContext.includes(feature)); // Return true only if all preferences and features are enabled return preferencesEnabled && featuresEnabled; }, [preferencesContext, featuresContext, preferences, features]); } exports.default = useSCPreferencesAndFeaturesEnabled;