diff --git a/js/src/api/util/decode.js b/js/src/api/util/decode.js index f2611c7f6..2d6eee75b 100644 --- a/js/src/api/util/decode.js +++ b/js/src/api/util/decode.js @@ -42,14 +42,14 @@ export function decodeCallData (data) { export function decodeMethodInput (methodAbi, paramdata) { if (!methodAbi) { throw new Error('decodeMethodInput should receive valid method-specific ABI'); - } else if (!paramdata) { - throw new Error('decodeMethodInput should receive valid parameter input data'); - } else if (!isHex(paramdata)) { - throw new Error('Input to decodeMethodInput should be a hex value'); - } else if (paramdata.substr(0, 2) === '0x') { - return decodeMethodInput(methodAbi, paramdata.slice(2)); - } else if (paramdata.length % 64 !== 0) { - throw new Error('Parameter length in decodeMethodInput not a multiple of 64 characters'); + } else if (paramdata && paramdata.length) { + if (!isHex(paramdata)) { + throw new Error('Input to decodeMethodInput should be a hex value'); + } else if (paramdata.substr(0, 2) === '0x') { + return decodeMethodInput(methodAbi, paramdata.slice(2)); + } else if (paramdata.length % 64 !== 0) { + throw new Error('Parameter length in decodeMethodInput not a multiple of 64 characters'); + } } return new Func(methodAbi).decodeInput(paramdata).map((decoded) => decoded.value); diff --git a/js/src/api/util/decode.spec.js b/js/src/api/util/decode.spec.js index 665af6d03..70bc44bc5 100644 --- a/js/src/api/util/decode.spec.js +++ b/js/src/api/util/decode.spec.js @@ -44,10 +44,6 @@ describe('api/util/decode', () => { expect(() => decodeMethodInput(null, null)).to.throw(/should receive valid method/); }); - it('expects valid parameter data', () => { - expect(() => decodeMethodInput({}, null)).to.throw(/should receive valid parameter/); - }); - it('expect valid hex parameter data', () => { expect(() => decodeMethodInput({}, 'invalid')).to.throw(/should be a hex value/); });