From d641c554ce73aebf5fe61d149cb219c0d3d10917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hi=E1=BA=BFu=20Ph=E1=BA=A1m?= Date: Tue, 25 Jun 2024 11:28:34 +0700 Subject: [PATCH] add safeTransferFrom for contract v4_2 --- .../feralfile-exhibition-v4_2/feralfile.go | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/contracts/feralfile-exhibition-v4_2/feralfile.go b/contracts/feralfile-exhibition-v4_2/feralfile.go index eba34a4..99f20ed 100644 --- a/contracts/feralfile-exhibition-v4_2/feralfile.go +++ b/contracts/feralfile-exhibition-v4_2/feralfile.go @@ -208,6 +208,30 @@ func (c *FeralfileExhibitionV4_2Contract) Call( } return contract.SetAdvanceSetting(t, params[0].([]common.Address), params[1].([]*big.Int)) + case "safeTransferFrom": + if len(params) != 3 { + return nil, fmt.Errorf("invalid params") + } + + from, ok := params[0].(common.Address) + if !ok { + return nil, fmt.Errorf("invalid from params") + } + + to, ok := params[1].(common.Address) + if !ok { + return nil, fmt.Errorf("invalid to params") + } + + tokenID, ok := params[2].(*big.Int) + if !ok { + return nil, fmt.Errorf("invalid token id params") + } + + return contract.SafeTransferFrom(t, + from, + to, + tokenID) default: return nil, fmt.Errorf("unsupported method") } @@ -379,6 +403,17 @@ func (c *FeralfileExhibitionV4_2Contract) Parse( } return []interface{}{params.AdvanceAddresses, advanceAmounts}, nil + case "safeTransferFrom": + var params struct { + From common.Address `json:"from"` + To common.Address `json:"to"` + TokenID ethereum.BigInt `json:"token_id"` + } + if err := json.Unmarshal(arguments, ¶ms); err != nil { + return nil, err + } + + return []interface{}{params.From, params.To, ¶ms.TokenID.Int}, nil default: return nil, fmt.Errorf("unsupported method") }