mirror of
https://github.com/WenPai-org/wpmind.git
synced 2025-08-06 13:47:16 +08:00
added api key settings validation
This commit is contained in:
parent
94d7d976ad
commit
5ddcbdfa35
4 changed files with 45 additions and 5 deletions
|
@ -2,4 +2,7 @@
|
||||||
--mind-brand-color: #e455df;
|
--mind-brand-color: #e455df;
|
||||||
--mind-brand-darken-color: #bb56df;
|
--mind-brand-darken-color: #bb56df;
|
||||||
--mind-brand-color-2: #4376ec;
|
--mind-brand-color-2: #4376ec;
|
||||||
|
|
||||||
|
--mind-error-color: #e74f4f;
|
||||||
|
--mind-error-light-color: #faf4f4;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,11 @@
|
||||||
*/
|
*/
|
||||||
import './style.scss';
|
import './style.scss';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* External dependencies
|
||||||
|
*/
|
||||||
|
import clsx from 'clsx';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WordPress dependencies
|
* WordPress dependencies
|
||||||
*/
|
*/
|
||||||
|
@ -15,11 +20,13 @@ import { __ } from '@wordpress/i18n';
|
||||||
/**
|
/**
|
||||||
* Internal dependencies
|
* Internal dependencies
|
||||||
*/
|
*/
|
||||||
|
import isValidOpenAIApiKey from '../../utils/is-valid-openai-api-key';
|
||||||
import { ReactComponent as LoadingIcon } from '../../icons/loading.svg';
|
import { ReactComponent as LoadingIcon } from '../../icons/loading.svg';
|
||||||
|
|
||||||
export default function PageSettings() {
|
export default function PageSettings() {
|
||||||
const [pendingSettings, setPendingSettings] = useState({});
|
const [pendingSettings, setPendingSettings] = useState({});
|
||||||
const [settingsChanged, setSettingsChanged] = useState(false);
|
const [settingsChanged, setSettingsChanged] = useState(false);
|
||||||
|
const [isInvalidAPIKey, setIsInvalidAPIKey] = useState(false);
|
||||||
|
|
||||||
const { updateSettings } = useDispatch('mind/settings');
|
const { updateSettings } = useDispatch('mind/settings');
|
||||||
|
|
||||||
|
@ -64,7 +71,13 @@ export default function PageSettings() {
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="mind-admin-settings-card-input">
|
<div
|
||||||
|
className={clsx(
|
||||||
|
'mind-admin-settings-card-input',
|
||||||
|
isInvalidAPIKey &&
|
||||||
|
'mind-admin-settings-card-input-error'
|
||||||
|
)}
|
||||||
|
>
|
||||||
<input
|
<input
|
||||||
id="mind-settings-openai-api-key"
|
id="mind-settings-openai-api-key"
|
||||||
type="text"
|
type="text"
|
||||||
|
@ -78,6 +91,11 @@ export default function PageSettings() {
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
{isInvalidAPIKey && (
|
||||||
|
<div className="mind-admin-setting-error">
|
||||||
|
{__('Please enter a valid API key', 'mind')}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{error && <div className="mind-admin-settings-error">{error}</div>}
|
{error && <div className="mind-admin-settings-error">{error}</div>}
|
||||||
|
@ -87,7 +105,14 @@ export default function PageSettings() {
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
updateSettings(pendingSettings);
|
if (
|
||||||
|
isValidOpenAIApiKey(pendingSettings.openai_api_key)
|
||||||
|
) {
|
||||||
|
setIsInvalidAPIKey(false);
|
||||||
|
updateSettings(pendingSettings);
|
||||||
|
} else {
|
||||||
|
setIsInvalidAPIKey(true);
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{__('Save Changes', 'mind')}
|
{__('Save Changes', 'mind')}
|
||||||
|
|
|
@ -39,15 +39,23 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.mind-admin-settings-card-input-error input {
|
||||||
|
border-color: var(--mind-error-color);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.mind-admin-settings-error {
|
.mind-admin-settings-error {
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
margin-bottom: -20px;
|
margin-bottom: -20px;
|
||||||
background-color: #faf4f4;
|
background-color: var(--mind-error-light-color);
|
||||||
color: #e74f4f;
|
color: var(--mind-error-color);
|
||||||
border-left: 3px solid #e74f4f;
|
border-left: 3px solid var(--mind-error-color);
|
||||||
|
}
|
||||||
|
.mind-admin-setting-error {
|
||||||
|
font-size: 12px;
|
||||||
|
margin-top: 2px;
|
||||||
|
color: var(--mind-error-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
.mind-admin-settings-actions {
|
.mind-admin-settings-actions {
|
||||||
|
|
4
src/utils/is-valid-openai-api-key/index.js
Normal file
4
src/utils/is-valid-openai-api-key/index.js
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
export default function isValidOpenAIApiKey(apiKey) {
|
||||||
|
const regex = /^sk-[a-zA-Z0-9]{32,}/;
|
||||||
|
return regex.test(apiKey);
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue