Skip to content

Commit

Permalink
Update documentation, and falsey 'null' type to empty string for empt…
Browse files Browse the repository at this point in the history
…y schema keys.
  • Loading branch information
robertdavid010 committed Nov 26, 2020
1 parent a9edd07 commit 8e59a77
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 17 deletions.
100 changes: 86 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,19 @@ erc725.utils.decodeKeyValue(schemaKeyOrElement, hexValue)
**Example**

```js
erc725.utils.decodeKeyValue(
// The schema definition
{
name: "LSP3Name",
key: "0xa5f15b1fa920bbdbc28f5d785e5224e3a66eb5f7d4092dc9ba82d5e5ae3abc87",
keyType: "Singleton",
valueContent: "String",
valueType: "string",
},
// The value to decode, returned as epected from smart contract
'0x6d792d636f6f6c2d6e616d65'
)
> 'my-cool-name'
```


Expand All @@ -167,20 +180,19 @@ erc725.utils.encodeKeyValue(schemaKeyOrElement, value)
**Example**

```js
erc725.utils.encodeKeyValue('LSPXName', 'My Cool name')
> '0x000000f...'

erc725.utils.encodeKeyValue('0x245...', 'My Cool name')
> '0x000000f...'

erc725.utils.encodeKeyValue({
name: 'LSPXName',
key: '0x356566..',
keyType: 'Singleton',
valueType: 'string',
valueContent: 'String'
}, 'My Cool name')
> '0x000000f...'
erc725.utils.encodeKeyValue(
// The schema definition
{
name: "Username",
key: "0xc55da378b3897c7aeec303b4fa7eceb3005a395160399831e4be123082c760da",
keyType: "Singleton",
valueContent: "String",
valueType: "string",
},
// the value to encode
'my-cool-name'
)
> '0x6d792d636f6f6c2d6e616d65'
```


Expand All @@ -206,6 +218,40 @@ erc725.utils.decodeAllData(schema, data)
**Example**

```js
erc725.decodeAllData(
// Array of schema keys
[
{
name: "Username",
key: "0xc55da378b3897c7aeec303b4fa7eceb3005a395160399831e4be123082c760da",
keyType: "Singleton",
valueContent: "String",
valueType: "string",
},
{
name: "Description",
key: "0xfc5327884a7fb1912dcdd0d78d7e6753f03e61a8e0b845a4b62f5efde472d0a8",
keyType: "Singleton",
valueContent: "URL",
valueType: "string",
}
],
// Array of data to decode
[
{
key: "0xc55da378b3897c7aeec303b4fa7eceb3005a395160399831e4be123082c760da",
value: "0x6d792d636f6f6c2d6e616d65"
},
{
key: "0xfc5327884a7fb1912dcdd0d78d7e6753f03e61a8e0b845a4b62f5efde472d0a8",
value: "0x687474703a2f2f6d792d636f6f6c2d776562736974652e68746d6c"
}
]
)

> { Username: 'my-cool-name', Description'http://my-cool-website.html' }

]
```


Expand All @@ -228,6 +274,32 @@ erc725.utils.encodeAllData(schema, data)
**Example**

```js
erc725.encodeAllData(
[
{
name: "Username",
key: "0xc55da378b3897c7aeec303b4fa7eceb3005a395160399831e4be123082c760da",
keyType: "Singleton",
valueContent: "String",
valueType: "string",
},
{
name: "Description",
key: "0xfc5327884a7fb1912dcdd0d78d7e6753f03e61a8e0b845a4b62f5efde472d0a8",
keyType: "Singleton",
valueContent: "URL",
valueType: "string",
}
],
{
Username: 'my-cool-name',
Description: 'http://my-cool-website.html
}
)
> [
{key: '0xc55da378b3897c7aeec303b4fa7eceb3005a395160399831e4be123082c760da', value: '0x6d792d636f6f6c2d6e616d65' },
{key: '0xfc5327884a7fb1912dcdd0d78d7e6753f03e61a8e0b845a4b62f5efde472d0a8', value: '0x687474703a2f2f6d792d636f6f6c2d776562736974652e68746d6c' }
]
```
2 changes: 1 addition & 1 deletion src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ export default class ERC725 {
}
const results = {}
// Add a null value by default for each schema item
this.options.schema.forEach(element => { results[element.name] = null })
this.options.schema.forEach(element => { results[element.name] = '' })

for (let i = 0; i < allRawData.length; i++) {

Expand Down
4 changes: 2 additions & 2 deletions src/lib/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ export const utils = {

const schemaElement = schema[index]
let newSchemaElement = null
results[schemaElement.name] = null
results[schemaElement.name] = '' // ensure empty field per schema element

// Looping through data
for (let i = 0; i < allRawData.length; i++) {
Expand All @@ -47,7 +47,7 @@ export const utils = {
const elementKey = schemaElement.elementKey + Web3Utils.leftPad(dataElement.key.substr(dataElement.key.length - 32), 32).replace('0x', '')

// Form new schema schema to check data against
let newElementValueContent = ''
let newElementValueContent
try {

// TODO: QUESTION: what about an array of uints
Expand Down

0 comments on commit 8e59a77

Please sign in to comment.