@@ -811,58 +811,60 @@ export default class TransactionBuilder {
811811 value : tokenId ,
812812 gte : 0 ,
813813 optional : true
814- } ,
815- {
816- name : 'function selector' ,
817- type : 'not-empty-string' ,
818- value : functionSelector
819814 }
820815 ] , callback ) )
821816 return ;
822817
823- functionSelector = functionSelector . replace ( '/\s*/g' , '' ) ;
818+ const args = {
819+ contract_address : toHex ( contractAddress ) ,
820+ owner_address : toHex ( issuerAddress )
821+ } ;
824822
825- if ( parameters . length ) {
826- const abiCoder = new AbiCoder ( ) ;
827- let types = [ ] ;
828- const values = [ ] ;
823+ if ( functionSelector && utils . isString ( functionSelector ) ) {
824+ functionSelector = functionSelector . replace ( '/\s*/g' , '' ) ;
825+ if ( parameters . length ) {
826+ const abiCoder = new AbiCoder ( ) ;
827+ let types = [ ] ;
828+ const values = [ ] ;
829829
830- for ( let i = 0 ; i < parameters . length ; i ++ ) {
831- let { type, value} = parameters [ i ] ;
830+ for ( let i = 0 ; i < parameters . length ; i ++ ) {
831+ let { type, value} = parameters [ i ] ;
832832
833- if ( ! type || ! utils . isString ( type ) || ! type . length )
834- return callback ( 'Invalid parameter type provided: ' + type ) ;
833+ if ( ! type || ! utils . isString ( type ) || ! type . length )
834+ return callback ( 'Invalid parameter type provided: ' + type ) ;
835835
836- if ( type == 'address' )
837- value = toHex ( value ) . replace ( ADDRESS_PREFIX_REGEX , '0x' ) ;
838- else if ( type == 'address[]' )
839- value = value . map ( v => toHex ( v ) . replace ( ADDRESS_PREFIX_REGEX , '0x' ) ) ;
836+ if ( type == 'address' )
837+ value = toHex ( value ) . replace ( ADDRESS_PREFIX_REGEX , '0x' ) ;
838+ else if ( type == 'address[]' )
839+ value = value . map ( v => toHex ( v ) . replace ( ADDRESS_PREFIX_REGEX , '0x' ) ) ;
840840
841- types . push ( type ) ;
842- values . push ( value ) ;
843- }
841+ types . push ( type ) ;
842+ values . push ( value ) ;
843+ }
844844
845- try {
846- // workaround for unsupported trcToken type
847- types = types . map ( type => {
848- if ( / t r c T o k e n / . test ( type ) ) {
849- type = type . replace ( / t r c T o k e n / , 'uint256' )
850- }
851- return type
852- } )
845+ try {
846+ // workaround for unsupported trcToken type
847+ types = types . map ( type => {
848+ if ( / t r c T o k e n / . test ( type ) ) {
849+ type = type . replace ( / t r c T o k e n / , 'uint256' )
850+ }
851+ return type
852+ } )
853+
854+ parameters = abiCoder . encode ( types , values ) . replace ( / ^ ( 0 x ) / , '' ) ;
855+ } catch ( ex ) {
856+ return callback ( ex ) ;
857+ }
858+ } else parameters = '' ;
853859
854- parameters = abiCoder . encode ( types , values ) . replace ( / ^ ( 0 x ) / , '' ) ;
855- } catch ( ex ) {
856- return callback ( ex ) ;
860+ if ( options . shieldedParameter ) {
861+ parameters = options . shieldedParameter . replace ( / ^ ( 0 x ) / , '' ) ;
857862 }
858- } else parameters = '' ;
859863
860- const args = {
861- contract_address : toHex ( contractAddress ) ,
862- owner_address : toHex ( issuerAddress ) ,
863- function_selector : functionSelector ,
864- parameter : parameters
865- } ;
864+ args . function_selector = functionSelector ;
865+ args . parameter = parameters ;
866+ }
867+
866868
867869 if ( ! options . _isConstant ) {
868870 args . call_value = parseInt ( callValue )
0 commit comments