UNPKG

@selfcommunity/react-core

Version:

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

33 lines (32 loc) 1.42 kB
import { useMemo } from 'react'; import { useSCPreferences } from '../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] * ); */ export default function useSCPreferencesAndFeaturesEnabled(preferences, features = []) { const { preferences: preferencesContext, features: featuresContext } = useSCPreferences(); return 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]); }