mirror of
https://ghproxy.net/https://github.com/elementor/one-click-accessibility.git
synced 2026-07-22 12:27:13 +08:00
* [APP-2197] fix tooltip trigger * [APP-2197] fix tooltip trigger * update: make in-app notices dismissable * update: move update infotip to a separate component for selective appearance --------- Co-authored-by: Nirbhay Singh <nirbhayr@elementor.com>
119 lines
3.5 KiB
JavaScript
119 lines
3.5 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,
|
|
setDismissedQuotaNotices,
|
|
} = 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);
|
|
}
|
|
|
|
if (result?.data?.ea11y_dismissed_quota_notices) {
|
|
setDismissedQuotaNotices(result?.data?.ea11y_dismissed_quota_notices);
|
|
}
|
|
}
|
|
}, [result.hasFinishedResolution]);
|
|
|
|
return {
|
|
loading: isLoading,
|
|
hasFinishedResolution: result.hasFinishedResolution,
|
|
};
|
|
};
|