neat: test page for testing router v2

This commit is contained in:
Sale Djenic 2024-05-31 11:37:03 +02:00
parent e896267874
commit 76fbc4e6fd
10 changed files with 1199 additions and 6 deletions

View File

@ -1,4 +1,4 @@
import sugar, sequtils, stint
import Tables, sugar, sequtils, stint
import uuids, chronicles
import io_interface
import app_service/service/wallet_account/service as wallet_account_service
@ -114,6 +114,12 @@ proc suggestedRoutes*(self: Controller, accountFrom: string, accountTo: string,
self.transactionService.suggestedRoutes(accountFrom, accountTo, amount, token, toToken, disabledFromChainIDs,
disabledToChainIDs, preferredChainIDs, sendType, lockedInAmounts)
proc suggestedRoutesV2*(self: Controller, accountFrom: string, accountTo: string, amount: Uint256, token: string, toToken: string,
disabledFromChainIDs, disabledToChainIDs, preferredChainIDs: seq[int], sendType: SendType, lockedInAmounts: Table[string, string],
extraParamsTable: Table[string, string]): string =
return self.transactionService.suggestedRoutesV2(accountFrom, accountTo, amount, token, toToken, disabledFromChainIDs,
disabledToChainIDs, preferredChainIDs, sendType, lockedInAmounts, extraParamsTable)
proc transfer*(self: Controller, from_addr: string, to_addr: string, assetKey: string, toAssetKey: string,
uuid: string, selectedRoutes: seq[TransactionPathDto], password: string, sendType: SendType,
usePassword: bool, doHashing: bool, tokenName: string, isOwnerToken: bool) =

View File

@ -1,4 +1,4 @@
import stint
import Tables, stint
import app/modules/shared_models/currency_amount
import app_service/service/transaction/dto
import app/modules/shared_models/collectibles_model as collectibles
@ -28,6 +28,11 @@ method suggestedRoutes*(self: AccessInterface, accountFrom: string, accountTo: s
disabledFromChainIDs, disabledToChainIDs, preferredChainIDs: seq[int], sendType: SendType, lockedInAmounts: string) {.base.} =
raise newException(ValueError, "No implementation available")
method suggestedRoutesV2*(self: AccessInterface, accountFrom: string, accountTo: string, amount: Uint256, token: string, toToken: string,
disabledFromChainIDs, disabledToChainIDs, preferredChainIDs: seq[int], sendType: SendType, lockedInAmounts: Table[string, string],
extraParamsTable: Table[string, string]): string {.base.} =
raise newException(ValueError, "No implementation available")
method suggestedRoutesReady*(self: AccessInterface, suggestedRoutes: SuggestedRoutesDto) {.base.} =
raise newException(ValueError, "No implementation available")

View File

@ -360,6 +360,13 @@ method suggestedRoutesReady*(self: Module, suggestedRoutes: SuggestedRoutesDto)
rawPaths = suggestedRoutes.rawBest)
self.view.setTransactionRoute(transactionRoutes)
method suggestedRoutesV2*(self: Module, accountFrom: string, accountTo: string, amount: Uint256, token: string, toToken: string,
disabledFromChainIDs, disabledToChainIDs, preferredChainIDs: seq[int], sendType: SendType, lockedInAmounts: Table[string, string],
extraParamsTable: Table[string, string]): string =
discard
return self.controller.suggestedRoutesV2(accountFrom, accountTo, amount, token, toToken, disabledFromChainIDs,
disabledToChainIDs, preferredChainIDs, sendType, lockedInAmounts, extraParamsTable)
method filterChanged*(self: Module, addresses: seq[string], chainIds: seq[int]) =
if addresses.len == 0:
return

View File

@ -1,4 +1,4 @@
import NimQml, sequtils, strutils, stint, sugar
import NimQml, Tables, json, sequtils, strutils, stint, sugar
import ./io_interface, ./accounts_model, ./account_item, ./network_model, ./network_item, ./suggested_route_item, ./transaction_routes
import app/modules/shared_models/collectibles_model as collectibles
@ -247,6 +247,32 @@ QtObject:
self.toNetworksModel.getRouteDisabledNetworkChainIds(), self.toNetworksModel.getRoutePreferredNetworkChainIds(),
self.sendType, self.fromNetworksModel.getRouteLockedChainIds())
proc suggestedRoutesV2*(self: View, accountFrom: string, accountTo: string, amount: string, token: string, toToken: string,
disabledFromChainIDs: string, disabledToChainIDs: string, preferredChainIDs: string, sendType: int, lockedInAmounts: string,
extraParamsJson: string): string {.slot.} =
var
parsedAmount = stint.u256(0)
disabledFromChainIDsArray: seq[int]
disabledToChainIDsArray: seq[int]
preferredChainIDsArray: seq[int]
lockedInAmountsTable: Table[string, string]
extraParamsTable: Table[string, string]
try:
parsedAmount = amount.parse(Uint256)
disabledFromChainIDsArray = map(parseJson(disabledFromChainIDs).getElems(), proc(x:JsonNode):int = x.getInt())
disabledToChainIDsArray = map(parseJson(disabledToChainIDs).getElems(), proc(x:JsonNode):int = x.getInt())
preferredChainIDsArray = map(parseJson(preferredChainIDs).getElems(), proc(x:JsonNode):int = x.getInt())
for chainId, lockedAmount in parseJson(lockedInAmounts):
lockedInAmountsTable[chainId] = lockedAmount.getStr()
for key, value in parseJson(extraParamsJson):
extraParamsTable[key] = value.getStr()
except Exception as e:
discard
return self.delegate.suggestedRoutesV2(accountFrom, accountTo, parsedAmount, token, toToken, disabledFromChainIDsArray,
disabledToChainIDsArray, preferredChainIDsArray, (SendType)sendType, lockedInAmountsTable, extraParamsTable)
proc switchSenderAccountByAddress*(self: View, address: string) =
let (account, index) = self.senderAccounts.getItemByAddress(address)
self.setSelectedSenderAccount(account)

View File

@ -597,6 +597,29 @@ QtObject:
)
self.threadpool.start(arg)
proc suggestedRoutesV2*(self: Service, accountFrom: string, accountTo: string, amount: Uint256, token: string, toToken: string,
disabledFromChainIDs, disabledToChainIDs, preferredChainIDs: seq[int], sendType: SendType, lockedInAmounts: Table[string, string],
extraParamsTable: Table[string, string]): string =
let amountAsHex = "0x" & eth_utils.stripLeadingZeros(amount.toHex)
try:
let response = eth.suggestedRoutesV2(
accountFrom,
accountTo,
amountAsHex,
token,
toToken,
disabledFromChainIDs,
disabledToChainIDs,
preferredChainIDs,
ord(sendType),
lockedInAmounts,
extraParamsTable,
)
return $response.result
except Exception as e:
error "Error getting suggested routes V2", message = e.msg
proc onFetchCryptoServices*(self: Service, response: string) {.slot.} =
let cryptoServices = parseJson(response){"result"}.getElems().map(x => x.toCryptoRampDto())
self.events.emit(SIGNAL_CRYPTO_SERVICES_READY, CryptoServicesArgs(data: cryptoServices))

View File

@ -32,5 +32,33 @@ proc suggestedRoutes*(accountFrom: string, accountTo: string, amount: string, to
preferredChainIDs, 1, lockedInAmounts]
return core.callPrivateRPC("wallet_getSuggestedRoutes", payload)
proc suggestedRoutesV2*(accountFrom: string, accountTo: string, amount: string, token: string, toToken: string, disabledFromChainIDs,
disabledToChainIDs, preferredChainIDs: seq[int], sendType: int, lockedInAmounts: Table[string, string], extraParamsTable: Table[string, string]): RpcResponse[JsonNode] =
const
gasFeeLow = 0
gasFeeMedium = 1
gasFeeHigh = 2
let data = %* {
"sendType": sendType,
"addrFrom": accountFrom,
"addrTo": accountTo,
"amountIn": amount,
"tokenID": token,
"toTokenID": toToken,
"disabledFromChainIDs": disabledFromChainIDs,
"disabledToChaindIDs": disabledToChainIDs,
"preferedChainIDs": preferredChainIDs,
"gasFeeMode": gasFeeMedium,
"fromLockedAmount": lockedInAmounts,
# "testnetMode" optional parameter
}
for key, value in extraParamsTable:
data[key] = %* value
let payload = %* [data]
return core.callPrivateRPC("wallet_getSuggestedRoutesV2", payload)
rpc(getEstimatedLatestBlockNumber, "wallet"):
chainId: int

View File

@ -44,6 +44,7 @@ SettingsContentBase {
readonly property int accountViewIndex: 4
readonly property int manageTokensViewIndex: 5
readonly property int savedAddressesViewIndex: 6
readonly property int routerTestViewIndex: 7
readonly property string walletSectionTitle: qsTr("Wallet")
readonly property string networksSectionTitle: qsTr("Networks")
@ -133,6 +134,7 @@ SettingsContentBase {
stackContainer.currentIndex === root.accountOrderViewIndex ? accountOrderView.height:
stackContainer.currentIndex === root.manageTokensViewIndex ? manageTokensView.implicitHeight :
stackContainer.currentIndex === root.savedAddressesViewIndex ? savedAddressesView.height:
stackContainer.currentIndex === root.routerTestViewIndex ? routerTest.height:
accountView.height
currentIndex: mainViewIndex
@ -185,6 +187,10 @@ SettingsContentBase {
root.sectionTitle = qsTr("Saved addresses")
root.titleRowComponentLoader.sourceComponent = addNewSavedAddressButtonComponent
} else if(currentIndex == root.routerTestViewIndex) {
root.rootStore.backButtonName = root.walletSectionTitle
root.sectionTitle = qsTr("Test the Router")
}
}
@ -236,8 +242,8 @@ SettingsContentBase {
onGoToManageTokensView: {
stackContainer.currentIndex = manageTokensViewIndex
}
onGoToSavedAddressesView: {
stackContainer.currentIndex = root.savedAddressesViewIndex
onGoToRouterTestView: {
stackContainer.currentIndex = root.routerTestViewIndex
}
}
@ -369,6 +375,13 @@ SettingsContentBase {
sendModal: root.rootStore.sendModalPopup
}
RouterTestView {
id: routerTest
Layout.fillHeight: true
Layout.fillWidth: true
}
DappPermissionsView {
walletStore: root.walletStore
}

View File

@ -27,6 +27,7 @@ Column {
signal goToDappPermissionsView()
signal goToManageTokensView()
signal goToSavedAddressesView()
signal goToRouterTestView()
signal runRenameKeypairFlow(var model)
signal runRemoveKeypairFlow(var model)
@ -177,6 +178,21 @@ Column {
Separator {}
StatusListItem {
title: qsTr("Test the Router")
height: 64
width: parent.width
onClicked: root.goToRouterTestView()
components: [
StatusIcon {
icon: "next"
color: Theme.palette.baseColor1
}
]
}
Separator {}
Spacer {
visible: root.walletStore.walletModule.hasPairedDevices
width: parent.width

File diff suppressed because it is too large Load Diff

View File

@ -7,4 +7,5 @@ MainView 1.0 MainView.qml
ManageTokensView 1.0 ManageTokensView.qml
NetworksView 1.0 NetworksView.qml
PermissionsListView 1.0 PermissionsListView.qml
SavedAddressesView 1.0 SavedAddressesView.qml
SavedAddressesView 1.0 SavedAddressesView.qml
RouterTestView 1.0 RouterTestView.qml