From 965427e32a008888a17244bccf0897191df28937 Mon Sep 17 00:00:00 2001 From: Sale Djenic Date: Fri, 30 Aug 2024 11:16:40 +0200 Subject: [PATCH] feat: fees update integration after calculating the initial route --- src/app/core/signals/remote_signals/wallet.nim | 7 ++++++- src/app_service/service/token/service.nim | 5 +++++ src/app_service/service/transaction/service.nim | 1 + ui/app/AppLayouts/Wallet/popups/swap/SwapModal.qml | 2 ++ vendor/status-go | 2 +- 5 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/app/core/signals/remote_signals/wallet.nim b/src/app/core/signals/remote_signals/wallet.nim index 1003d61be1c..0798a9a7e0b 100644 --- a/src/app/core/signals/remote_signals/wallet.nim +++ b/src/app/core/signals/remote_signals/wallet.nim @@ -1,4 +1,4 @@ -import json, options, chronicles +import json, options, chronicles, Tables import base import signal_type @@ -24,6 +24,7 @@ type WalletSignal* = ref object of Signal bestRoute*: seq[TransactionPathDtoV2] error*: string errorCode*: string + updatedPrices*: Table[string, float64] proc fromEvent*(T: type WalletSignal, signalType: SignalType, jsonSignal: JsonNode): WalletSignal = result = WalletSignal() @@ -67,6 +68,10 @@ proc fromEvent*(T: type WalletSignal, signalType: SignalType, jsonSignal: JsonNo result.error = errorResponseJsonNode["details"].getStr if errorResponseJsonNode.contains("code"): result.errorCode = errorResponseJsonNode["code"].getStr + result.updatedPrices = initTable[string, float64]() + if event.contains("UpdatedPrices"): + for tokenSymbol, price in event["UpdatedPrices"].pairs(): + result.updatedPrices[tokenSymbol] = price.getFloat except: error "Error parsing best route" return diff --git a/src/app_service/service/token/service.nim b/src/app_service/service/token/service.nim index dc1a6ce1816..e74adb1519d 100644 --- a/src/app_service/service/token/service.nim +++ b/src/app_service/service/token/service.nim @@ -565,3 +565,8 @@ QtObject: self.fetchTokenPreferences() except Exception as e: error "error: ", procName="updateTokenPreferences", errName=e.name, errDesription=e.msg + + proc updateTokenPrices*(self: Service, updatedPrices: Table[string, float64]) = + for tokenSymbol, price in updatedPrices: + self.tokenPriceTable[tokenSymbol] = price + self.events.emit(SIGNAL_TOKENS_PRICES_UPDATED, Args()) diff --git a/src/app_service/service/transaction/service.nim b/src/app_service/service/transaction/service.nim index 378da1a5b36..83cab1067f4 100644 --- a/src/app_service/service/transaction/service.nim +++ b/src/app_service/service/transaction/service.nim @@ -181,6 +181,7 @@ QtObject: self.events.on(SignalType.WalletSuggestedRoutes.event) do(e:Args): var data = WalletSignal(e) + self.tokenService.updateTokenPrices(data.updatedPrices) self.suggestedRoutesReady(data.uuid, data.bestRoute, data.bestRouteRaw, data.errorCode, data.error) self.events.on(PendingTransactionTypeDto.WalletTransfer.event) do(e: Args): diff --git a/ui/app/AppLayouts/Wallet/popups/swap/SwapModal.qml b/ui/app/AppLayouts/Wallet/popups/swap/SwapModal.qml index 87a56cd5b8b..5b96ca1e913 100644 --- a/ui/app/AppLayouts/Wallet/popups/swap/SwapModal.qml +++ b/ui/app/AppLayouts/Wallet/popups/swap/SwapModal.qml @@ -235,6 +235,8 @@ StatusDialog { swapSide: SwapInputPanel.SwapSide.Pay swapExchangeButtonWidth: swapExchangeButton.width + bottomTextLoading: root.swapAdaptor.swapProposalLoading + onSelectedHoldingIdChanged: root.swapInputParamsForm.fromTokensKey = selectedHoldingId onRawValueChanged: { diff --git a/vendor/status-go b/vendor/status-go index 557c4f7e8fb..1eabc68d064 160000 --- a/vendor/status-go +++ b/vendor/status-go @@ -1 +1 @@ -Subproject commit 557c4f7e8fb2fb5572d9dc0754c6e7a3243f4d48 +Subproject commit 1eabc68d064f7effd10b8888cbbd09476cdfd0af