1
0
Fork 0
mirror of https://github.com/eosswedenorg/thalos synced 2026-06-16 04:24:56 +02:00

internal/ship/contract_row.go: adding DecodeContractRow that actually decodes data from abi

This commit is contained in:
Henrik Hautakoski 2024-08-11 17:03:42 +02:00
parent a892b40cde
commit 6d7d004b2b

View file

@ -1,6 +1,9 @@
package ship
import (
"bytes"
"github.com/eosswedenorg/thalos/internal/abi"
"github.com/mitchellh/mapstructure"
"github.com/shufflingpixels/antelope-go/chain"
)
@ -19,3 +22,16 @@ func ParseContractRow(v map[string]interface{}) (*ContractRow, error) {
err := mapstructure.WeakDecode(v, out)
return out, err
}
func DecodeContractRow(manager *abi.AbiManager, data map[string]any) (any, error) {
row, err := ParseContractRow(data)
if err != nil {
return nil, err
}
abi, err := manager.GetAbi(row.Code)
if err != nil {
return nil, err
}
return abi.DecodeTable(bytes.NewReader(row.Value), row.Table)
}