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,