Added URI validation functions and UI for correcting errors
Summary: Some uris parsed from the device contain required parameters. Here we parse the uri and check if there is a required parameter on navigation. If there is we alert the user to correct the error. In the next diff, I will strip away non-required parameters if they are present but not filled in. Reviewed By: danielbuechele Differential Revision: D16710944 fbshipit-source-id: ea32cfe60e2bb5e4f395caebf585ba1b220dcefe
This commit is contained in:
committed by
Facebook Github Bot
parent
ce34c20506
commit
0d5850d723
41
src/plugins/navigation/hooks/requiredParameters.js
Normal file
41
src/plugins/navigation/hooks/requiredParameters.js
Normal file
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* Copyright 2018-present Facebook.
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
* @format
|
||||
* @flow strict-local
|
||||
*/
|
||||
|
||||
import {useEffect, useState} from 'react';
|
||||
import {parameterIsNumberType} from '../util/uri';
|
||||
|
||||
const validateParameter = (value: string, parameter: string) => {
|
||||
return (
|
||||
value.length > 0 &&
|
||||
(parameterIsNumberType(parameter) ? !isNaN(parseInt(value, 10)) : true)
|
||||
);
|
||||
};
|
||||
|
||||
export const useRequiredParameterFormValidator = (
|
||||
requiredParameters: Array<string>,
|
||||
) => {
|
||||
const [values, setValuesArray] = useState<Array<string>>(
|
||||
requiredParameters.map(() => ''),
|
||||
);
|
||||
const [isValid, setIsValid] = useState(false);
|
||||
useEffect(() => {
|
||||
if (requiredParameters.length != values.length) {
|
||||
setValuesArray(requiredParameters.map(() => ''));
|
||||
}
|
||||
if (
|
||||
values.every((value, idx) =>
|
||||
validateParameter(value, requiredParameters[idx]),
|
||||
)
|
||||
) {
|
||||
setIsValid(true);
|
||||
} else {
|
||||
setIsValid(false);
|
||||
}
|
||||
});
|
||||
return [isValid, values, setValuesArray];
|
||||
};
|
||||
Reference in New Issue
Block a user