@selfcommunity/react-core
Version:
React Core Components useful for integrating UI Community components (react-ui).
36 lines (35 loc) • 1.59 kB
JavaScript
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;
;