github.com/status-im/status-go@v1.1.0/services/wallet/router/common.go (about) 1 package router 2 3 import ( 4 "github.com/status-im/status-go/services/wallet/common" 5 "github.com/status-im/status-go/services/wallet/router/routes" 6 ) 7 8 func removeBestRouteFromAllRouters(allRoutes []routes.Route, best routes.Route) []routes.Route { 9 for i := len(allRoutes) - 1; i >= 0; i-- { 10 route := allRoutes[i] 11 routeFound := true 12 for _, p := range route { 13 found := false 14 for _, b := range best { 15 if p.ProcessorName == b.ProcessorName && 16 (p.FromChain == nil && b.FromChain == nil || p.FromChain.ChainID == b.FromChain.ChainID) && 17 (p.ToChain == nil && b.ToChain == nil || p.ToChain.ChainID == b.ToChain.ChainID) && 18 (p.FromToken == nil && b.FromToken == nil || p.FromToken.Symbol == b.FromToken.Symbol) { 19 found = true 20 break 21 } 22 } 23 if !found { 24 routeFound = false 25 break 26 } 27 } 28 if routeFound { 29 return append(allRoutes[:i], allRoutes[i+1:]...) 30 } 31 } 32 33 return nil 34 } 35 36 func getChainPriority(chainID uint64) int { 37 switch chainID { 38 case common.EthereumMainnet, common.EthereumSepolia: 39 return 1 40 case common.OptimismMainnet, common.OptimismSepolia: 41 return 2 42 case common.ArbitrumMainnet, common.ArbitrumSepolia: 43 return 3 44 default: 45 return 0 46 } 47 } 48 49 func getRoutePriority(route routes.Route) int { 50 priority := 0 51 for _, path := range route { 52 priority += getChainPriority(path.FromChain.ChainID) 53 } 54 return priority 55 }