mirror of
https://github.com/status-im/status-go.git
synced 2025-01-09 14:16:21 +00:00
00559692bc
It's a breaking change due to errors' changes, the list of mapped old error codes: - `"WR-001"` is now `"WRR-001"` - `"WR-002"` is now `"WRR-002"` - `"WR-003"` is now `"WRR-003"` - `"WR-004"` is now `"WRR-004"` - `"WR-005"` is now `"WRR-005"` - `"WR-006"` is now `"WRR-006"` - `"WR-007"` is now `"WRR-007"` - `"WR-008"` is now `"WRR-008"` - `"WR-009"` is now `"WRR-009"` - `"WR-010"` is now `"WRR-010"` - `"WR-011"` is now `"WRR-011"` - `"WR-012"` is now `"WRR-012"` - `"WR-013"` is now `"WRR-013"` - `"WR-014"` is now `"WRR-014"` - `"WR-015"` is now `"WRR-015"` - `"WR-019"` is now `"WRR-016"` - `"WR-020"` is now `"WRR-017"` - `"WR-021"` is now `"WRR-018"` - `"WR-025"` is now `"WRR-019"` - `"WR-016"` is now `"WR-001"` - `"WR-017"` is now `"WR-002"` - `"WR-018"` is now `"WR-003"` - `"WR-022"` is now `"WR-004"` - `"WR-023"` is now `"WR-005"` - `"WR-024"` is now `"WR-006"` - `"WR-026"` is now `"WR-007"` - `"WR-027"` is now `"WR-008"` Other changes: - `RouteInputParams` type moved to `requests` package and code updated accordingly - `SuggestedFees` type moved to a new `fees` package and code updated accordingly - `SendType` type moved to a new `sendtype` package and code updated accordingly - the following functions moved to `common` package - `ArrayContainsElement` - `ArraysWithSameElements` - `SameSingleChainTransfer` - `CopyMapGeneric` - `GweiToEth` - `WeiToGwei` - the following consts moved to `common` package - `HexAddressLength` - `SupportedNetworks` - `SupportedTestNetworks`
78 lines
1.8 KiB
Go
78 lines
1.8 KiB
Go
package common
|
|
|
|
import (
|
|
"context"
|
|
"math/big"
|
|
"reflect"
|
|
|
|
gethParams "github.com/ethereum/go-ethereum/params"
|
|
"github.com/status-im/status-go/params"
|
|
)
|
|
|
|
// ShouldCancel returns true if the context has been cancelled and task should be aborted
|
|
func ShouldCancel(ctx context.Context) bool {
|
|
select {
|
|
case <-ctx.Done():
|
|
return true
|
|
default:
|
|
}
|
|
return false
|
|
}
|
|
|
|
func NetworksToChainIDs(networks []*params.Network) []uint64 {
|
|
chainIDs := make([]uint64, 0)
|
|
for _, network := range networks {
|
|
chainIDs = append(chainIDs, network.ChainID)
|
|
}
|
|
|
|
return chainIDs
|
|
}
|
|
|
|
func ArrayContainsElement[T comparable](el T, arr []T) bool {
|
|
for _, e := range arr {
|
|
if e == el {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func IsSingleChainOperation(fromChains []*params.Network, toChains []*params.Network) bool {
|
|
return len(fromChains) == 1 &&
|
|
len(toChains) == 1 &&
|
|
fromChains[0].ChainID == toChains[0].ChainID
|
|
}
|
|
|
|
// CopyMapGeneric creates a copy of any map, if the deepCopyValue function is provided, it will be used to copy values.
|
|
func CopyMapGeneric(original interface{}, deepCopyValueFn func(interface{}) interface{}) interface{} {
|
|
originalVal := reflect.ValueOf(original)
|
|
if originalVal.Kind() != reflect.Map {
|
|
return nil
|
|
}
|
|
|
|
newMap := reflect.MakeMap(originalVal.Type())
|
|
for iter := originalVal.MapRange(); iter.Next(); {
|
|
if deepCopyValueFn != nil {
|
|
newMap.SetMapIndex(iter.Key(), reflect.ValueOf(deepCopyValueFn(iter.Value().Interface())))
|
|
} else {
|
|
newMap.SetMapIndex(iter.Key(), iter.Value())
|
|
}
|
|
}
|
|
|
|
return newMap.Interface()
|
|
}
|
|
|
|
func GweiToEth(val *big.Float) *big.Float {
|
|
return new(big.Float).Quo(val, big.NewFloat(1000000000))
|
|
}
|
|
|
|
func WeiToGwei(val *big.Int) *big.Float {
|
|
result := new(big.Float)
|
|
result.SetInt(val)
|
|
|
|
unit := new(big.Int)
|
|
unit.SetInt64(gethParams.GWei)
|
|
|
|
return result.Quo(result, new(big.Float).SetInt(unit))
|
|
}
|