github.com/status-im/status-go@v1.1.0/services/connector/commands/chain_id.go (about)

     1  package commands
     2  
     3  import (
     4  	"database/sql"
     5  
     6  	"github.com/status-im/status-go/services/connector/chainutils"
     7  	persistence "github.com/status-im/status-go/services/connector/database"
     8  	walletCommon "github.com/status-im/status-go/services/wallet/common"
     9  )
    10  
    11  type ChainIDCommand struct {
    12  	NetworkManager NetworkManagerInterface
    13  	Db             *sql.DB
    14  }
    15  
    16  func (c *ChainIDCommand) Execute(request RPCRequest) (interface{}, error) {
    17  	err := request.Validate()
    18  	if err != nil {
    19  		return "", err
    20  	}
    21  
    22  	dApp, err := persistence.SelectDAppByUrl(c.Db, request.URL)
    23  	if err != nil {
    24  		return "", err
    25  	}
    26  
    27  	var chainId uint64
    28  	if dApp == nil {
    29  		chainId, err = chainutils.GetDefaultChainID(c.NetworkManager)
    30  		if err != nil {
    31  			return "", err
    32  		}
    33  	} else {
    34  		chainId = dApp.ChainID
    35  	}
    36  
    37  	chainIdHex, err := chainutils.GetHexChainID(walletCommon.ChainID(chainId).String())
    38  	if err != nil {
    39  		return "", err
    40  	}
    41  
    42  	return chainIdHex, nil
    43  }