Skip to content

Commit

Permalink
contract method: format all args to string
Browse files Browse the repository at this point in the history
  • Loading branch information
tom2drum committed Mar 14, 2024
1 parent 354193e commit e2a73e4
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 10 deletions.
6 changes: 3 additions & 3 deletions ui/address/contract/methodForm/useFormatFieldValue.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,19 @@ export default function useFormatFieldValue({ argType, argTypeMatchInt }: Params

if (argTypeMatchInt) {
const formattedString = value.replace(/\s/g, '');
return parseInt(formattedString);
return formattedString;
}

if (argType === 'bool') {
const formattedValue = value.toLowerCase();

switch (formattedValue) {
case 'true': {
return true;
return 'true';
}

case 'false':{
return false;
return 'false';
}

default:
Expand Down
14 changes: 7 additions & 7 deletions ui/address/contract/methodForm/useValidateField.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,13 @@ export default function useValidateField({ isOptional, argType, argTypeMatchInt
return argType.match(BYTES_REGEXP);
}, [ argType ]);

// some values are formatted before they are sent to the validator
// see ./useFormatFieldValue.tsx hook
return React.useCallback((value: string | number | boolean | undefined) => {
return React.useCallback((value: string | undefined) => {
if (value === undefined || value === '') {
return isOptional ? true : 'Field is required';
}

if (argType === 'address') {
if (typeof value !== 'string' || !isAddress(value)) {
if (!isAddress(value)) {
return 'Invalid address format';
}

Expand All @@ -41,11 +39,13 @@ export default function useValidateField({ isOptional, argType, argTypeMatchInt
}

if (argTypeMatchInt) {
if (typeof value !== 'number' || Object.is(value, NaN)) {
const formattedValue = Number(value);

if (Object.is(formattedValue, NaN)) {
return 'Invalid integer format';
}

if (value > argTypeMatchInt.max || value < argTypeMatchInt.min) {
if (formattedValue > argTypeMatchInt.max || formattedValue < argTypeMatchInt.min) {
const lowerBoundary = argTypeMatchInt.isUnsigned ? '0' : `-1 * 2 ^ ${ Number(argTypeMatchInt.power) - 1 }`;
const upperBoundary = argTypeMatchInt.isUnsigned ? `2 ^ ${ argTypeMatchInt.power } - 1` : `2 ^ ${ Number(argTypeMatchInt.power) - 1 } - 1`;
return `Value should be in range from "${ lowerBoundary }" to "${ upperBoundary }" inclusively`;
Expand All @@ -55,7 +55,7 @@ export default function useValidateField({ isOptional, argType, argTypeMatchInt
}

if (argType === 'bool') {
if (typeof value !== 'boolean') {
if (value !== 'true' && value !== 'false') {
return 'Invalid boolean format. Allowed values: true, false';
}
}
Expand Down

0 comments on commit e2a73e4

Please sign in to comment.