one-click-accessibility/modules/settings/assets/js/contexts/analytics-context.js
VasylD 38bdaef8b6
[APP-1107] Add dashboard for analytics (#204)
* [APP-1108][APP-1109][APP-1110] Add analytics backend logic

* [APP-1108][APP-1109][APP-1110] Add analytics backend logic

* Add nonce to the widget settings

* Update routes and DB table

* Fix comments

* Fix comments

* Fix comments

* Fix comments

* Fix comments

* Fix comments

* [APP-1107] Add dashboard for analytics

* [APP-1107] Add dashboard for analytics

* [APP-1107] Add dashboard for analytics

* [APP-1107] Add dashboard for analytics

* [APP-1107] Add dashboard for analytics

* [APP-1107] Add dashboard for analytics

* [APP-1107] Add dashboard for analytics

* [APP-1107] Add dashboard for analytics

* [APP-1107] Add dashboard for analytics

* [APP-1107] Add dashboard for analytics

* [APP-1201] add accessibility rules

* [APP-1107] fixed API endpoint

* [APP-1107] fixed API endpoint

* [APP-1107] fixed API endpoint

* [APP-1107] add check for is_active

* update to the latest

* update to the latest

* update to the latest

* fix bugs, add changes

* fix bugs, add changes

* fix bugs, add changes

* fix bugs, add changes
2025-03-17 12:26:52 +02:00

65 lines
1.4 KiB
JavaScript

import { useStorage } from '@ea11y/hooks';
import {
createContext,
useContext,
useEffect,
useState,
} from '@wordpress/element';
import API from '../api';
const AnalyticsContext = createContext(null);
export const AnalyticsContextProvider = ({ children }) => {
const { save } = useStorage();
const [isAnalyticsEnabled, setIsAnalyticsEnabled] = useState(false);
const [isProVersion, setIsProVersion] = useState(false);
const [loading, setLoading] = useState(false);
const [period, setPeriod] = useState(30);
const [stats, setStats] = useState({
dates: [],
elements: [],
});
/**
* Get initial logs list
*/
useEffect(() => {
if (isProVersion && isAnalyticsEnabled) {
setLoading(true);
void API.getStatistic({ period }).then((data) => {
setStats(data);
setLoading(false);
});
}
}, [period, isAnalyticsEnabled, isProVersion]);
const updateIsAnalyticsEnabled = async () => {
await save({
ea11y_analytics_enabled: !isAnalyticsEnabled,
});
setIsAnalyticsEnabled(!isAnalyticsEnabled);
setPeriod(30);
};
return (
<AnalyticsContext.Provider
value={{
isAnalyticsEnabled,
setIsAnalyticsEnabled,
isProVersion,
setIsProVersion,
updateIsAnalyticsEnabled,
period,
setPeriod,
stats,
loading,
}}
>
{children}
</AnalyticsContext.Provider>
);
};
export const useAnalyticsContext = () => {
return useContext(AnalyticsContext);
};