one-click-accessibility/modules/settings/assets/js/hooks/use-saved-settings.js
Nirbhay Singh dc8bdd4c3b
fix: default border radius (#258)
* fix: default border radius

* add: default corner radius for new users

* update: add support for default values for users with saved style settings

* updated phpunit workflow

* revert to master

* hardcode 6.8.x

* update: default values for existing users

* update: remove saving default corner radius for new users

* fix: update default radius for text icon

* fix: PHPUnit tests for WP 6.8.0

* align with develop

* set to latest

---------

Co-authored-by: Raz Ohad <admin@bainternet.info>
Co-authored-by: Raz Ohad <ohad@elementor.com>
2025-04-18 12:49:29 +05:30

106 lines
3 KiB
JavaScript

import { useSettings } from '@ea11y/hooks';
import { store as coreDataStore } from '@wordpress/core-data';
import { useSelect } from '@wordpress/data';
import { useEffect, useState } from '@wordpress/element';
import { useAnalyticsContext } from '../contexts/analytics-context';
import { calculatePlanUsage } from '../utils';
export const useSavedSettings = () => {
const [isLoading, setIsLoading] = useState(true);
const {
setWidgetMenuSettings,
setHideMinimumOptionAlert,
setIconDesign,
setIconPosition,
setPlanData,
setPlanUsage,
setAccessibilityStatementData,
setShowAccessibilityGeneratedInfotip,
setSkipToContentSettings,
} = useSettings();
const { setIsAnalyticsEnabled, setIsProVersion } = useAnalyticsContext();
const result = useSelect((select) => {
return {
data: select(coreDataStore).getEntityRecord('root', 'site'),
isResolving: select(coreDataStore).isResolving('getEntityRecord', [
'root',
'site',
]),
hasFinishedResolution: select(coreDataStore).hasFinishedResolution(
'getEntityRecord',
['root', 'site'],
),
};
}, []);
useEffect(() => {
setIsLoading(result.isResolving);
}, [result]);
useEffect(() => {
if (result.hasFinishedResolution) {
if (result?.data?.ea11y_widget_menu_settings) {
setWidgetMenuSettings(result.data.ea11y_widget_menu_settings);
}
if (result?.data?.ea11y_widget_icon_settings?.style) {
const iconStyle = result.data.ea11y_widget_icon_settings.style;
if (!iconStyle?.cornerRadius) {
const radius = iconStyle.icon === 'text' ? 4 : 32;
iconStyle.cornerRadius = { unit: 'px', radius };
}
setIconDesign(iconStyle);
}
if (result?.data?.ea11y_hide_minimum_active_options_alert) {
setHideMinimumOptionAlert(
result.data.ea11y_hide_minimum_active_options_alert,
);
}
if (result?.data?.ea11y_widget_icon_settings?.position) {
setIconPosition(result.data.ea11y_widget_icon_settings.position);
}
if (result?.data?.ea11y_plan_data) {
setIsProVersion(
result?.data?.ea11y_plan_data?.plan?.features?.analytics,
);
setPlanData(result.data.ea11y_plan_data);
setPlanUsage(
calculatePlanUsage(
result?.data?.ea11y_plan_data?.visits?.allowed,
result?.data?.ea11y_plan_data?.visits?.used,
),
);
}
if (result?.data?.ea11y_accessibility_statement_data) {
setAccessibilityStatementData(
result.data.ea11y_accessibility_statement_data,
);
}
if (result?.data?.ea11y_show_accessibility_generated_page_infotip) {
setShowAccessibilityGeneratedInfotip(
result.data.ea11y_show_accessibility_generated_page_infotip,
);
}
if (result?.data?.ea11y_skip_to_content_settings) {
setSkipToContentSettings(result?.data?.ea11y_skip_to_content_settings);
}
if (result?.data?.ea11y_analytics_enabled) {
setIsAnalyticsEnabled(result?.data?.ea11y_analytics_enabled);
}
}
}, [result.hasFinishedResolution]);
return {
loading: isLoading,
hasFinishedResolution: result.hasFinishedResolution,
};
};