UNPKG

@selfcommunity/react-core

Version:

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

66 lines (65 loc) 2.68 kB
import { useMemo } from 'react'; import { useSCPreferences } from '../components/provider/SCPreferencesProvider'; /** * Custom hook to recover a given preference. * @param preferenceKey - full preference key (e.g., 'section.name') * @param defaultValue - default returned value * @returns the preference value or undefined/defaultValue if doesn't exist * * Ex. * const customValue = useSCPreference<string>(SCPreferences.CUSTOM_SETTING); * const numericValue = useSCPreference<number>(SCPreferences.CUSTOM_SETTING, 0); */ function useSCPreference(preferenceKey, defaultValue) { const { preferences } = useSCPreferences(); return useMemo(() => { if (!preferences || !(preferenceKey in preferences)) { return defaultValue; } const pref = preferences[preferenceKey]; return pref.value; }, [preferences, preferenceKey, defaultValue]); } /** * Custom hook to check if a given preference is present and has a value. * @param preferenceKey - full preference key (e.g., 'section.name') * @param defaultValue - default returned value (default=false) * @returns boolean * * Ex. * const isEnabled = useSCPreferenceEnabled(SCPreferences.CONFIGURATIONS_CONNECTION_ENABLED); **/ function useSCPreferenceEnabled(preferenceKey, defaultValue = false) { const value = useSCPreference(preferenceKey, defaultValue); return value !== null && value !== void 0 ? value : defaultValue; } /** * Custom hook to check if all specified preferences are enabled * @param preferenceKeys - Array of preference keys to check * @param defaultValue - Default value if a preference doesn't exist * @returns boolean - true if all preferences are enabled * * Ex. * const arePreferencesEnabled = useSCPreferencesEnabled([ * SCPreferences.CONFIGURATIONS_POST_USER_ADDRESSING_ENABLED, * SCPreferences.CONFIGURATIONS_SCHEDULED_POSTS_ENABLED * ]); */ function useSCPreferencesEnabled(preferenceKeys, defaultValue = false) { const { preferences } = useSCPreferences(); return useMemo(() => { // Se non ci sono preferences o non è stato passato nessun preferenceKey, ritorna il valore di default if (!preferences || !preferenceKeys.length) { return defaultValue; } // Verifica che tutte le preferenze siano presenti e abbiano value = true return preferenceKeys.every((key) => { if (!(key in preferences)) { return defaultValue; } return preferences[key].value; }); }, [preferences, preferenceKeys, defaultValue]); } export { useSCPreferenceEnabled, useSCPreferencesEnabled }; export default useSCPreference;