fix(dapps): failure if case sensitivity mismatch in account address
Update: #15126
This commit is contained in:
parent
cb368ea5fb
commit
8cca2664e4
|
@ -78,6 +78,7 @@ Item {
|
|||
// Component {
|
||||
// id: dappsStoreComponent
|
||||
|
||||
|
||||
// DAppsStore {
|
||||
// property string dappsListReceivedJsonStr: '[]'
|
||||
|
||||
|
@ -133,7 +134,7 @@ Item {
|
|||
// emoji: "😋"
|
||||
// color: "#2A4AF5"
|
||||
// }
|
||||
// ListElement { address: "0x3" }
|
||||
// ListElement { address: "0x3a" }
|
||||
// }
|
||||
// readonly property ListModel ownAccounts: accounts
|
||||
// }
|
||||
|
@ -183,6 +184,23 @@ Item {
|
|||
// compare(store.signMessageCalls.length, 1, "expected a call to store.signMessage")
|
||||
// compare(store.signMessageCalls[0].message, td.request.data)
|
||||
// }
|
||||
|
||||
// function test_onSessionRequestEventDifferentCaseForAddress() {
|
||||
// let sdk = handler.sdk
|
||||
|
||||
// let testAddressUpper = "0x3A"
|
||||
// let chainId = 2
|
||||
// let method = "personal_sign"
|
||||
// let message = "hello world"
|
||||
// let params = [Helpers.strToHex(message), testAddressUpper]
|
||||
// let topic = "b536a"
|
||||
// let session = JSON.parse(Testing.formatSessionRequest(chainId, method, params, topic))
|
||||
// // Expect to have calls to getActiveSessions from service initialization
|
||||
// let prevRequests = sdk.getActiveSessionsCallbacks.length
|
||||
// sdk.sessionRequestEvent(session)
|
||||
|
||||
// compare(sdk.getActiveSessionsCallbacks.length, 1, "expected DAppsRequestHandler call sdk.getActiveSessions")
|
||||
// }
|
||||
// }
|
||||
|
||||
// TestCase {
|
||||
|
@ -298,7 +316,7 @@ Item {
|
|||
// let walletStore = service.walletStore
|
||||
// let store = service.store
|
||||
|
||||
// let testAddress = "0x3"
|
||||
// let testAddress = "0x3a"
|
||||
// let chainId = 2
|
||||
// let method = "personal_sign"
|
||||
// let message = "hello world"
|
||||
|
|
|
@ -138,4 +138,22 @@ QtObject {
|
|||
function roleNames(model) {
|
||||
return Internal.ModelUtils.roleNames(model)
|
||||
}
|
||||
|
||||
/// Returns the first model entry that satisfies the condition function or null if none is found.
|
||||
function getFirstModelEntryIf(model, conditionFn) {
|
||||
if (!model)
|
||||
return null
|
||||
|
||||
const count = model.rowCount()
|
||||
|
||||
for (let i = 0; i < count; i++) {
|
||||
const modelItem = Internal.ModelUtils.get(model, i)
|
||||
|
||||
if (conditionFn(modelItem)) {
|
||||
return modelItem
|
||||
}
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
|
|
@ -112,8 +112,20 @@ QObject {
|
|||
function resolveAsync(event) {
|
||||
let method = event.params.request.method
|
||||
let account = lookupAccountFromEvent(event, method)
|
||||
if(!account) {
|
||||
console.error("Error finding account for event", JSON.stringify(event))
|
||||
return null
|
||||
}
|
||||
let network = lookupNetworkFromEvent(event, method)
|
||||
if(!network) {
|
||||
console.error("Error finding network for event", JSON.stringify(event))
|
||||
return null
|
||||
}
|
||||
let data = extractMethodData(event, method)
|
||||
if(!data) {
|
||||
console.error("Error in event data lookup", JSON.stringify(event))
|
||||
return null
|
||||
}
|
||||
let obj = sessionRequestComponent.createObject(null, {
|
||||
event,
|
||||
topic: event.topic,
|
||||
|
@ -175,7 +187,9 @@ QObject {
|
|||
}
|
||||
address = event.params.request.params[0].from
|
||||
}
|
||||
return ModelUtils.getByKey(walletStore.ownAccounts, "address", address)
|
||||
return ModelUtils.getFirstModelEntryIf(walletStore.ownAccounts, (account) => {
|
||||
return account.address.toLowerCase() === address.toLowerCase()
|
||||
})
|
||||
}
|
||||
|
||||
/// Returns null if the network is not found
|
||||
|
|
Loading…
Reference in New Issue