semuxproject / semux-js

Semux Javascript SDK
https://semuxproject.github.io/semux-js/
MIT License
7 stars 5 forks source link

Add object as a paramter to transfer() method #3

Open dinc334 opened 5 years ago

dinc334 commented 5 years ago

I am trying to create transaction with specific data. Based on Semux docs .transfer() method has 3 required paramaters - from, to and value. Working Code without data

try {
  var txHash = await sem.transfer( 
      from.address,'0x541365fe0818ea0d2d7ab7f7bc79f719f5f72227', amount);
} catch(e) {
console.log(e);
}

Bad code with wrapped object

try {
    var txHash = await sem.transfer({
        from: from.address, 
        to: '0x541365fe0818ea0d2d7ab7f7bc79f719f5f72227', 
        value: amount,
        data: '0x746970'
    });
} catch(e) {
     console.log(e);
}

Trace error:

{ Error: Required parameter to was null or undefined when calling transfer.
    at new RequiredError (./node_modules/semux-js/dist/semux.umd.js:9980:28)
    at Object.transfer (./node_modules/semux-js/dist/semux.umd.js:11197:23)
    at Object.transfer (./node_modules/semux-js/dist/semux.umd.js:12134:78)
    at SemuxApi.transfer (./node_modules/semux-js/dist/semux.umd.js:12605:47)
    at sendCoins (./index.js:75:26)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:189:7) field: 'to' }

So, can we add object as a parameter in order to remove the need to specify optional parameters. Like this:

sem.transfer(from,to,value, null, null.null, null, '0x00');
honeycrypto commented 5 years ago

This API is auto generated by Swagger. I agree that interface is not ideal, but it will require quite some time to rewrite and maintain all these changes. Also, there is no sense to modify only transfer method as requested, most functions have many optional parameters.