one-click-accessibility/modules/settings/assets/js/contexts/plugin-settings.js
Nirbhay Singh 680e9ffa64
[APP-837] Add post connect modal (#120)
* add: post connect modal

* update: settings prefix

* fix: connect modal design

* update: connect modal text

* add: connect modal graphics

* update: connect modal icon

* update: post connect modal

* update: sidebar menu text

* update: text of icon settings

* update: text

* update: php compatibility with return types
2024-12-30 16:32:40 +05:30

56 lines
1.3 KiB
JavaScript

import { useToastNotification } from '@ea11y/hooks';
import {
createContext,
useCallback,
useContext,
useEffect,
useState,
} from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import API from '../api';
const PluginSettingsContext = createContext({});
export const PluginSettingsProvider = ({ children }) => {
const { error } = useToastNotification();
const [pluginSettings, setPluginSettings] = useState();
const [loaded, setLoaded] = useState(false);
const refreshPluginSettings = useCallback(() => {
API.getPluginSettings()
.then((settings) => {
if ('isConnected' in settings) {
settings.isConnected = Boolean(settings.isConnected);
}
if ('closePostConnectModal' in settings) {
settings.closePostConnectModal = Boolean(
settings.closePostConnectModal,
);
}
setPluginSettings(settings);
setLoaded(true);
})
.catch(() => {
error(__('An error occurred.', 'pojo-accessibility'));
setLoaded(true);
});
}, []);
useEffect(() => {
refreshPluginSettings();
}, [refreshPluginSettings]);
return (
<PluginSettingsContext.Provider
value={{ ...pluginSettings, loaded, refreshPluginSettings }}
>
{children}
</PluginSettingsContext.Provider>
);
};
export const usePluginSettingsContext = () => {
return useContext(PluginSettingsContext);
};