fix: settings input validation and error handling (#609)

Co-authored-by: Ven <vendicated@riseup.net>
This commit is contained in:
Dossy Shiobara 2023-03-20 22:16:01 -04:00 committed by GitHub
parent 265547213c
commit 37c2a8a5de
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 1 deletions

@ -38,9 +38,12 @@ export function SettingNumericComponent({ option, pluginSettings, definedSetting
function handleChange(newValue) { function handleChange(newValue) {
const isValid = option.isValid?.call(definedSettings, newValue) ?? true; const isValid = option.isValid?.call(definedSettings, newValue) ?? true;
setError(null);
if (typeof isValid === "string") setError(isValid); if (typeof isValid === "string") setError(isValid);
else if (!isValid) setError("Invalid input provided."); else if (!isValid) setError("Invalid input provided.");
else if (option.type === OptionType.NUMBER && BigInt(newValue) >= MAX_SAFE_NUMBER) {
if (option.type === OptionType.NUMBER && BigInt(newValue) >= MAX_SAFE_NUMBER) {
setState(`${Number.MAX_SAFE_INTEGER}`); setState(`${Number.MAX_SAFE_INTEGER}`);
onChange(serialize(newValue)); onChange(serialize(newValue));
} else { } else {

@ -36,6 +36,7 @@ export function SettingSelectComponent({ option, pluginSettings, definedSettings
if (typeof isValid === "string") setError(isValid); if (typeof isValid === "string") setError(isValid);
else if (!isValid) setError("Invalid input provided."); else if (!isValid) setError("Invalid input provided.");
else { else {
setError(null);
setState(newValue); setState(newValue);
onChange(newValue); onChange(newValue);
} }

@ -34,6 +34,7 @@ export function SettingTextComponent({ option, pluginSettings, definedSettings,
if (typeof isValid === "string") setError(isValid); if (typeof isValid === "string") setError(isValid);
else if (!isValid) setError("Invalid input provided."); else if (!isValid) setError("Invalid input provided.");
else { else {
setError(null);
setState(newValue); setState(newValue);
onChange(newValue); onChange(newValue);
} }