Skip to content

Commit

Permalink
Merge pull request #451 from ERC725Alliance/fix/array-decoding
Browse files Browse the repository at this point in the history
fix: allow to decode `0x` as empty array `[]` for keyType `Array`
  • Loading branch information
Hugoo authored May 29, 2024
2 parents 622675d + 93b1c08 commit 9422444
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 1 deletion.
21 changes: 21 additions & 0 deletions src/lib/decodeData.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,27 @@ describe('decodeData', () => {
expect(decodedData.value).to.eql(3);
});

it('parses type Array correctly, return empty array when value is 0x', () => {
const decodedData = decodeData(
{
keyName: 'LSP12IssuedAssets[]',
value: '0x',
},
[
{
name: 'LSP12IssuedAssets[]',
key: '0x7c8c3416d6cda87cd42c71ea1843df28ac4850354f988d55ee2eaa47b6dc05cd',
keyType: 'Array',
valueContent: 'Address',
valueType: 'address',
},
],
);

expect(decodedData.name).to.eql('LSP12IssuedAssets[]');
expect(decodedData.value).to.eql([]);
});

it('decodes dynamic keys', () => {
const decodedData = decodeData(
[
Expand Down
2 changes: 1 addition & 1 deletion src/lib/decodeData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ export function decodeKey(schema: ERC725JSONSchema, value) {
switch (lowerCaseKeyType) {
case 'array': {
// If user has requested a key which does not exist in the contract, value will be: 0x and value.find() will fail.
if (!value) {
if (!value || value === '0x') {
return [];
}

Expand Down

0 comments on commit 9422444

Please sign in to comment.