fix(@desktop/wallet): Fix for wrong link is generated when transaction is done on testnet
fixes #8681
This commit is contained in:
parent
5b423a6dbd
commit
9825a48eec
|
@ -41,7 +41,7 @@ proc getNetwork*(self: Controller): NetworkDto =
|
|||
proc init*(self: Controller) =
|
||||
self.events.on(PROVIDER_SIGNAL_ON_POST_MESSAGE) do(e:Args):
|
||||
let args = OnPostMessageArgs(e)
|
||||
self.delegate.onPostMessage(args.payloadMethod, args.result)
|
||||
self.delegate.onPostMessage(args.payloadMethod, args.result, args.chainId)
|
||||
|
||||
self.events.on(SIGNAL_WALLET_ACCOUNT_NETWORK_ENABLED_UPDATED) do(e: Args):
|
||||
self.delegate.updateNetwork(self.getNetwork())
|
||||
|
|
|
@ -27,7 +27,7 @@ method postMessage*(self: AccessInterface, payloadMethod: string, requestType: s
|
|||
method ensResourceURL*(self: AccessInterface, ens: string, url: string): (string, string, string, string, bool) =
|
||||
raise newException(ValueError, "No implementation available")
|
||||
|
||||
method onPostMessage*(self: AccessInterface, payloadMethod: string, result: string) {.base.} =
|
||||
method onPostMessage*(self: AccessInterface, payloadMethod: string, result: string, chainId: string) {.base.} =
|
||||
raise newException(ValueError, "No implementation available")
|
||||
|
||||
method viewDidLoad*(self: AccessInterface) {.base.} =
|
||||
|
|
|
@ -71,8 +71,8 @@ method viewDidLoad*(self: Module) =
|
|||
method postMessage*(self: Module, payloadMethod: string, requestType: string, message: string) =
|
||||
self.controller.postMessage(payloadMethod, requestType, message)
|
||||
|
||||
method onPostMessage*(self: Module, payloadMethod: string, result: string) =
|
||||
self.view.postMessageResult(payloadMethod, result)
|
||||
method onPostMessage*(self: Module, payloadMethod: string, result: string, chainId: string) =
|
||||
self.view.postMessageResult(payloadMethod, result, chainId)
|
||||
|
||||
method ensResourceURL*(self: Module, ens: string, url: string): (string, string, string, string, bool) =
|
||||
return self.controller.ensResourceURL(ens, url)
|
||||
|
|
|
@ -70,7 +70,7 @@ QtObject:
|
|||
proc getHost*(self: View, url: string): string {.slot.} =
|
||||
result = url_host(url)
|
||||
|
||||
proc postMessageResult*(self: View, payloadMethod: string, result: string) {.signal.}
|
||||
proc postMessageResult*(self: View, payloadMethod: string, result: string, chainId: string) {.signal.}
|
||||
|
||||
proc postMessage*(self: View, payloadMethod: string, requestType: string, message: string) {.slot.} =
|
||||
self.delegate.postMessage(payloadMethod, requestType, message)
|
||||
|
|
|
@ -2,6 +2,8 @@ import NimQml, Tables, strutils, strformat
|
|||
|
||||
import ./item
|
||||
|
||||
const EXPLORER_TX_PREFIX* = "/tx/"
|
||||
|
||||
type
|
||||
ModelRole* {.pure.} = enum
|
||||
ChainId = UserRole + 1,
|
||||
|
@ -182,3 +184,9 @@ QtObject:
|
|||
if item.getLayer() == 1 and item.getIsTest() == testNet:
|
||||
return item.getChainId()
|
||||
return 0
|
||||
|
||||
proc getBlockExplorerURL*(self: Model, chainId: int): string {.slot.} =
|
||||
for item in self.items:
|
||||
if(item.getChainId() == chainId):
|
||||
return item.getBlockExplorerURL() & EXPLORER_TX_PREFIX
|
||||
return ""
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import ../../common/utils
|
||||
|
||||
const WEB3_SEND_ASYNC = "web3-send-async-read-only"
|
||||
|
||||
type
|
||||
PostMessageTaskArg = ref object of QObjectTaskArg
|
||||
payloadMethod: string
|
||||
|
@ -9,9 +11,13 @@ type
|
|||
const postMessageTask: Task = proc(argEncoded: string) {.gcsafe, nimcall.} =
|
||||
let arg = decode[PostMessageTaskArg](argEncoded)
|
||||
|
||||
var chainId = ""
|
||||
if(arg.requestType == WEB3_SEND_ASYNC):
|
||||
chainId = $parseJson(arg.message)["payload"]["chainId"]
|
||||
let result = status_go_provider.providerRequest(arg.requestType, arg.message).result
|
||||
let responseJson = %* {
|
||||
"payloadMethod": arg.payloadMethod,
|
||||
"result": $result,
|
||||
"chainId": chainId
|
||||
}
|
||||
arg.finish(responseJson)
|
||||
|
|
|
@ -19,6 +19,7 @@ type
|
|||
OnPostMessageArgs* = ref object of Args
|
||||
payloadMethod*: string
|
||||
result*: string
|
||||
chainId*: string
|
||||
|
||||
QtObject:
|
||||
type Service* = ref object of QObject
|
||||
|
@ -55,6 +56,7 @@ QtObject:
|
|||
var data = OnPostMessageArgs()
|
||||
discard responseObj.getProp("payloadMethod", data.payloadMethod)
|
||||
discard responseObj.getProp("result", data.result)
|
||||
discard responseObj.getProp("chainId", data.chainId)
|
||||
|
||||
self.events.emit(PROVIDER_SIGNAL_ON_POST_MESSAGE, data)
|
||||
|
||||
|
@ -67,4 +69,4 @@ QtObject:
|
|||
requestType: requestType,
|
||||
message: message
|
||||
)
|
||||
self.threadpool.start(arg)
|
||||
self.threadpool.start(arg)
|
||||
|
|
|
@ -191,9 +191,8 @@ StatusSectionLayout {
|
|||
_internal.signingError.text = message
|
||||
return _internal.signingError.open()
|
||||
}
|
||||
showToastMessage: function(result) {
|
||||
// TODO: WIP under PR https://github.com/status-im/status-desktop/pull/4274
|
||||
let url = `${WalletStore.getEtherscanLink()}/${result}`;
|
||||
showToastMessage: function(result, chainId) {
|
||||
let url = "%1/%2".arg(WalletStore.getEtherscanLink(chainId)).arg(result)
|
||||
Global.displayToastMessage(qsTr("Transaction pending..."),
|
||||
qsTr("View on etherscan"),
|
||||
"",
|
||||
|
|
|
@ -10,11 +10,10 @@ QtObject {
|
|||
property string defaultCurrency: walletSection.currentCurrency
|
||||
property string signingPhrase: walletSection.signingPhrase
|
||||
|
||||
function getEtherscanLink() {
|
||||
return profileSectionModule.ensUsernamesModule.getEtherscanLink()
|
||||
function getEtherscanLink(chainID) {
|
||||
return networksModule.all.getBlockExplorerURL(chainID)
|
||||
}
|
||||
|
||||
|
||||
function switchAccountByAddress(address) {
|
||||
browserSectionCurrentAccount.switchAccountByAddress(address)
|
||||
walletSectionTransactions.setModel(address)
|
||||
|
|
|
@ -41,7 +41,7 @@ QtObject {
|
|||
}
|
||||
|
||||
if (isTx) {
|
||||
showToastMessage(responseObj.result.result)
|
||||
showToastMessage(responseObj.result.result, chainId)
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
|
|
|
@ -162,14 +162,16 @@ Item {
|
|||
releaseEnsModal.sendingError.text = response.result
|
||||
return releaseEnsModal.sendingError.open()
|
||||
}
|
||||
usernameReleased(username);
|
||||
let url = `${releaseEnsModal.store.getEtherscanLink()}/${response.result}`;
|
||||
Global.displayToastMessage(qsTr("Transaction pending..."),
|
||||
qsTr("View on etherscan"),
|
||||
"",
|
||||
true,
|
||||
Constants.ephemeralNotificationType.normal,
|
||||
url)
|
||||
for(var i=0; i<releaseEnsModal.bestRoutes.length; i++) {
|
||||
usernameReleased(username);
|
||||
let url = "%1/%2".arg(releaseEnsModal.store.getEtherscanLink(releaseEnsModal.bestRoutes[i].fromNetwork.chainId)).arg(response.result)
|
||||
Global.displayToastMessage(qsTr("Transaction pending..."),
|
||||
qsTr("View on etherscan"),
|
||||
"",
|
||||
true,
|
||||
Constants.ephemeralNotificationType.normal,
|
||||
url)
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Error parsing the response', e)
|
||||
}
|
||||
|
|
|
@ -60,14 +60,14 @@ Item {
|
|||
Component {
|
||||
id: transactionDialogComponent
|
||||
SendModal {
|
||||
id: releaseEnsModal
|
||||
id: connectEnsModal
|
||||
modalHeader: qsTr("Connect username with your pubkey")
|
||||
interactive: false
|
||||
sendType: Constants.SendType.ENSSetPubKey
|
||||
preSelectedRecipient: root.ensUsernamesStore.getEnsRegisteredAddress()
|
||||
preDefinedAmountToSend: LocaleUtils.numberToLocaleString(0)
|
||||
preSelectedAsset: {
|
||||
let assetsList = releaseEnsModal.store.currentAccount.assets
|
||||
let assetsList = connectEnsModal.store.currentAccount.assets
|
||||
for(var i=0; i< assetsList.count;i++) {
|
||||
if("ETH" === assetsList.rowData(i, "symbol"))
|
||||
return {
|
||||
|
@ -105,21 +105,23 @@ Item {
|
|||
if (response.result.includes(Constants.walletSection.cancelledMessage)) {
|
||||
return
|
||||
}
|
||||
releaseEnsModal.sendingError.text = response.result
|
||||
return releaseEnsModal.sendingError.open()
|
||||
connectEnsModal.sendingError.text = response.result
|
||||
return connectEnsModal.sendingError.open()
|
||||
}
|
||||
for(var i=0; i<connectEnsModal.bestRoutes.length; i++) {
|
||||
usernameUpdated(ensUsername.text);
|
||||
let url = "%1/%2".arg(connectEnsModal.store.getEtherscanLink(connectEnsModal.bestRoutes[i].fromNetwork.chainId)).arg(response.result)
|
||||
Global.displayToastMessage(qsTr("Transaction pending..."),
|
||||
qsTr("View on etherscan"),
|
||||
"",
|
||||
true,
|
||||
Constants.ephemeralNotificationType.normal,
|
||||
url)
|
||||
}
|
||||
usernameUpdated(ensUsername.text);
|
||||
let url = `${releaseEnsModal.store.getEtherscanLink()}/${response.result}`;
|
||||
Global.displayToastMessage(qsTr("Transaction pending..."),
|
||||
qsTr("View on etherscan"),
|
||||
"",
|
||||
true,
|
||||
Constants.ephemeralNotificationType.normal,
|
||||
url)
|
||||
} catch (e) {
|
||||
console.error('Error parsing the response', e)
|
||||
}
|
||||
releaseEnsModal.close()
|
||||
connectEnsModal.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -94,14 +94,16 @@ Item {
|
|||
buyEnsModal.sendingError.text = response.result
|
||||
return buyEnsModal.sendingError.open()
|
||||
}
|
||||
usernameRegistered(username)
|
||||
let url = `${buyEnsModal.store.getEtherscanLink()}/${response.result}`;
|
||||
Global.displayToastMessage(qsTr("Transaction pending..."),
|
||||
qsTr("View on etherscan"),
|
||||
"",
|
||||
true,
|
||||
Constants.ephemeralNotificationType.normal,
|
||||
url)
|
||||
for(var i=0; i<buyEnsModal.bestRoutes.length; i++) {
|
||||
usernameRegistered(username)
|
||||
let url = "%1/%2".arg(buyEnsModal.store.getEtherscanLink(buyEnsModal.bestRoutes[i].fromNetwork.chainId)).arg(response.result)
|
||||
Global.displayToastMessage(qsTr("Transaction pending..."),
|
||||
qsTr("View on etherscan"),
|
||||
"",
|
||||
true,
|
||||
Constants.ephemeralNotificationType.normal,
|
||||
url)
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Error parsing the response', e)
|
||||
}
|
||||
|
|
|
@ -541,7 +541,7 @@ StatusDialog {
|
|||
}
|
||||
for(var i=0; i<popup.bestRoutes.length; i++) {
|
||||
let txHash = response.result[popup.bestRoutes[i].fromNetwork.chainId]
|
||||
let url = `${popup.store.getEtherscanLink()}/${txHash}`
|
||||
let url = "%1/%2".arg(popup.store.getEtherscanLink(popup.bestRoutes[i].fromNetwork.chainId)).arg(txHash)
|
||||
Global.displayToastMessage(qsTr("Transaction pending..."),
|
||||
qsTr("View on etherscan"),
|
||||
"",
|
||||
|
|
|
@ -197,13 +197,15 @@ Item {
|
|||
buyStickersModal.sendingError.text = response.result
|
||||
return buyStickersModal.sendingError.open()
|
||||
}
|
||||
let url = `${buyStickersModal.store.getEtherscanLink()}/${response.result}`;
|
||||
Global.displayToastMessage(qsTr("Transaction pending..."),
|
||||
qsTr("View on etherscan"),
|
||||
"",
|
||||
true,
|
||||
Constants.ephemeralNotificationType.normal,
|
||||
url)
|
||||
for(var i=0; i<buyStickersModal.bestRoutes.length; i++) {
|
||||
let url = "%1/%2".arg(buyStickersModal.store.getEtherscanLink(buyStickersModal.bestRoutes[i].fromNetwork.chainId)).arg(response.result)
|
||||
Global.displayToastMessage(qsTr("Transaction pending..."),
|
||||
qsTr("View on etherscan"),
|
||||
"",
|
||||
true,
|
||||
Constants.ephemeralNotificationType.normal,
|
||||
url)
|
||||
}
|
||||
buyStickersModal.close()
|
||||
} catch (e) {
|
||||
console.error('Error parsing the response', e)
|
||||
|
|
|
@ -110,13 +110,16 @@ ModalPopup {
|
|||
buyStickersPackModal.sendingError.text = response.result
|
||||
return buyStickersPackModal.sendingError.open()
|
||||
}
|
||||
let url = `${buyStickersPackModal.store.getEtherscanLink()}/${response.result}`;
|
||||
Global.displayToastMessage(qsTr("Transaction pending..."),
|
||||
qsTr("View on etherscan"),
|
||||
"",
|
||||
true,
|
||||
Constants.ephemeralNotificationType.normal,
|
||||
url)
|
||||
for(var i=0; i<buyStickersPackModal.bestRoutes.length; i++) {
|
||||
let txHash = response.result[buyStickersPackModal.bestRoutes[i].fromNetwork.chainId]
|
||||
let url = "%1/%2".arg(buyStickersPackModal.store.getEtherscanLink(buyStickersPackModal.bestRoutes[i].fromNetwork.chainId)).arg(response.result)
|
||||
Global.displayToastMessage(qsTr("Transaction pending..."),
|
||||
qsTr("View on etherscan"),
|
||||
"",
|
||||
true,
|
||||
Constants.ephemeralNotificationType.normal,
|
||||
url)
|
||||
}
|
||||
buyStickersPackModal.close()
|
||||
} catch (e) {
|
||||
console.error('Error parsing the response', e)
|
||||
|
|
|
@ -53,8 +53,8 @@ QtObject {
|
|||
}
|
||||
}
|
||||
|
||||
function getEtherscanLink() {
|
||||
return profileSectionModule.ensUsernamesModule.getEtherscanLink()
|
||||
function getEtherscanLink(chainID) {
|
||||
return networksModule.all.getBlockExplorerURL(chainID)
|
||||
}
|
||||
|
||||
function copyToClipboard(text) {
|
||||
|
|
Loading…
Reference in New Issue