github.com/status-im/status-go@v1.1.0/services/connector/chainutils/utils.go (about) 1 package chainutils 2 3 import ( 4 "errors" 5 "fmt" 6 "strconv" 7 8 "github.com/status-im/status-go/params" 9 ) 10 11 type NetworkManagerInterface interface { 12 GetActiveNetworks() ([]*params.Network, error) 13 } 14 15 var ( 16 ErrNoActiveNetworks = errors.New("no active networks available") 17 ErrUnsupportedNetwork = errors.New("unsupported network") 18 ) 19 20 // GetSupportedChainIDs retrieves the chain IDs from the provided NetworkManager. 21 func GetSupportedChainIDs(networkManager NetworkManagerInterface) ([]uint64, error) { 22 activeNetworks, err := networkManager.GetActiveNetworks() 23 if err != nil { 24 return nil, err 25 } 26 27 if len(activeNetworks) < 1 { 28 return nil, ErrNoActiveNetworks 29 } 30 31 chainIDs := make([]uint64, len(activeNetworks)) 32 for i, network := range activeNetworks { 33 chainIDs[i] = network.ChainID 34 } 35 36 return chainIDs, nil 37 } 38 39 func GetDefaultChainID(networkManager NetworkManagerInterface) (uint64, error) { 40 chainIDs, err := GetSupportedChainIDs(networkManager) 41 if err != nil { 42 return 0, err 43 } 44 45 return chainIDs[0], nil 46 } 47 48 func GetHexChainID(decimalStr string) (string, error) { 49 decimalValue, err := strconv.ParseInt(decimalStr, 10, 64) 50 if err != nil { 51 return "", ErrUnsupportedNetwork 52 } 53 54 hexStr := fmt.Sprintf(`0x%s`, strconv.FormatInt(decimalValue, 16)) 55 56 return hexStr, nil 57 }