one-click-accessibility/modules/settings/assets/js/hooks/use-saved-settings.js
Nirbhay Singh 2e56683ffd
[APP-2100][APP-2219] Add quota notices to the admin (#430)
* Release/v3.9.0 (#428)

* add: quota notices to the admin

* update: plan usage calculation and enable quota notices in admin

* fix: in app notices layout

* update: text for admin notices

* update: remove log

* update: tooltip text

---------

Co-authored-by: Aviran Levi <143411291+aviranLevi1@users.noreply.github.com>
2025-11-27 17:45:20 +05:30

114 lines
3.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({
aiCredits: calculatePlanUsage(
result?.data?.ea11y_plan_data?.aiCredits?.allowed,
result?.data?.ea11y_plan_data?.aiCredits?.used,
),
scannedPages: calculatePlanUsage(
result?.data?.ea11y_plan_data?.scannedPages?.allowed,
result?.data?.ea11y_plan_data?.scannedPages?.used,
),
visits: 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,
};
};