From fc01f5536ec021b80f7f27a2716ab5efcc93f2d6 Mon Sep 17 00:00:00 2001 From: Benjamin Elo Date: Wed, 14 Aug 2019 05:24:39 -0700 Subject: [PATCH] Added boolean parameters to uri validation Summary: Booleans must also be validated. These are denoted by {!boolParam}, as in they have a '!' symbol in front. Reviewed By: danielbuechele Differential Revision: D16802996 fbshipit-source-id: c03b858f0872dea0610e1d28aa9b48936f1117a6 --- .../navigation/components/RequiredParametersDialog.js | 8 ++++++++ src/plugins/navigation/util/uri.js | 10 +++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/plugins/navigation/components/RequiredParametersDialog.js b/src/plugins/navigation/components/RequiredParametersDialog.js index 6eb289b7e..db490cca3 100644 --- a/src/plugins/navigation/components/RequiredParametersDialog.js +++ b/src/plugins/navigation/components/RequiredParametersDialog.js @@ -10,6 +10,7 @@ import {Button, FlexColumn, Input, Sheet, styled, Glyph, colors} from 'flipper'; import { replaceRequiredParametersWithValues, parameterIsNumberType, + parameterIsBooleanType, validateParameter, liveEdit, } from '../util/uri'; @@ -113,6 +114,13 @@ export default (props: Props) => { !validateParameter(values[idx], paramater) ? ( Parameter must be a number ) : null} + {values[idx] && + parameterIsBooleanType(paramater) && + !validateParameter(values[idx], paramater) ? ( + + Parameter must be either 'true' or 'false' + + ) : null} ))} {liveEdit(uri, values)} diff --git a/src/plugins/navigation/util/uri.js b/src/plugins/navigation/util/uri.js index c61a34ef5..5739d66c1 100644 --- a/src/plugins/navigation/util/uri.js +++ b/src/plugins/navigation/util/uri.js @@ -11,7 +11,10 @@ import querystring from 'querystring'; export const validateParameter = (value: string, parameter: string) => { return ( value && - (parameterIsNumberType(parameter) ? !isNaN(parseInt(value, 10)) : true) + (parameterIsNumberType(parameter) ? !isNaN(parseInt(value, 10)) : true) && + (parameterIsBooleanType(parameter) + ? value === 'true' || value === 'false' + : true) ); }; @@ -40,6 +43,11 @@ export const parameterIsNumberType = (parameter: string) => { return regExp.test(parameter); }; +export const parameterIsBooleanType = (parameter: string) => { + const regExp = /^{(!|\?!)/g; + return regExp.test(parameter); +}; + export const replaceRequiredParametersWithValues = ( uri: string, values: Array,