/** * Styles */ import './style.scss'; /** * External dependencies */ import clsx from 'clsx'; /** * WordPress dependencies */ // eslint-disable-next-line import/no-extraneous-dependencies import { isEqual } from 'lodash'; import { useState, useEffect } from '@wordpress/element'; import { useSelect, useDispatch } from '@wordpress/data'; import { __ } from '@wordpress/i18n'; /** * Internal dependencies */ import isValidOpenAIApiKey from '../../utils/is-valid-openai-api-key'; import { ReactComponent as LoadingIcon } from '../../icons/loading.svg'; export default function PageSettings() { const [pendingSettings, setPendingSettings] = useState({}); const [settingsChanged, setSettingsChanged] = useState(false); const [isInvalidAPIKey, setIsInvalidAPIKey] = useState(false); const { updateSettings } = useDispatch('mind/settings'); const { settings, updating, error } = useSelect((select) => { const settingsSelect = select('mind/settings'); return { settings: settingsSelect.getSettings(), updating: settingsSelect.getUpdating(), error: settingsSelect.getError(), }; }); // Update pending settings from actual settings object. useEffect(() => { setPendingSettings(settings); }, [settings]); // Check if settings changed. useEffect(() => { setSettingsChanged(!isEqual(settings, pendingSettings)); }, [settings, pendingSettings]); return ( <>
{__( 'This setting is required, since our plugin works with OpenAI.', 'mind' )}{' '} {__('Create API key', 'mind')}
{ e.preventDefault(); setPendingSettings({ ...pendingSettings, openai_api_key: e.target.value, }); }} /> {isInvalidAPIKey && (
{__('Please enter a valid API key', 'mind')}
)}
{error &&
{error}
}
); }