Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Maskbook/Extension/UserDefaults+extension.swift
Original file line number Diff line number Diff line change
Expand Up @@ -440,6 +440,7 @@ extension UserDefaultSettings {
var hasRiskConfirmed: Bool {
get {
guard let address = defaultAccountAddress else { return false }
log.debug("\(confirmedPluginRiskWarnings) address: \(address)", source: "warning-confirm")
return confirmedPluginRiskWarnings.contains(address)
}
}
Expand Down
26 changes: 18 additions & 8 deletions Maskbook/Wallet/WalletConnect/Client/WalletConnectClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import Combine
import CoreDataStack
import Foundation
import WalletConnectSwift
import web3swift

// swiftlint:disable force_unwrapping function_parameter_count line_length
class WalletConnectClient {
Expand Down Expand Up @@ -154,7 +155,12 @@ extension WalletConnectClient: ClientDelegate {
disconnect(session: session)
return
}
guard let address = session.walletInfo?.accounts[safeIndex: 0] else {
guard let accounts: [String] = session.walletInfo?.accounts.compactMap({
EthereumAddress.toChecksumAddress($0) ?? $0
}) else {
return
}
guard let address = accounts.first else {
disconnect(session: session)
return
}
Expand Down Expand Up @@ -218,19 +224,23 @@ extension WalletConnectClient: ClientDelegate {

func saveAccount(session: Session, address: String, network: BlockChainNetwork) {
AppContext.shared.coreDataStack.persistentContainer.viewContext.perform {
if let accounts = session.walletInfo?.accounts {
for account in accounts {
let isNewAccount = WalletCoreStorage.addWalletConnectAccount(session: session, address: account)
if isNewAccount, network.networkId != self.userSetting.network.networkId {
self.delegate.showChangeNetworkAlert(networkFromSession: network, address: address)
}
guard let accounts: [String] = session.walletInfo?.accounts.compactMap({
EthereumAddress.toChecksumAddress($0) ?? $0
}) else {
return
}
for account in accounts {
let isNewAccount = WalletCoreStorage.addWalletConnectAccount(session: session, address: account)
if isNewAccount, network.networkId != self.userSetting.network.networkId {
self.delegate.showChangeNetworkAlert(networkFromSession: network, address: address)
}
}
}
}

func removeAccountFromSession(session: Session) {
guard let address = session.walletInfo?.accounts[0] else { return }
guard let rawAddress = session.walletInfo?.accounts.first else { return }
let address = EthereumAddress.toChecksumAddress(rawAddress) ?? rawAddress
AppContext.shared.coreDataStack.persistentContainer.viewContext.perform {
if let account = WalletCoreStorage.getAccount(address: address) {
guard account.fromWalletConnect else { return }
Expand Down
4 changes: 1 addition & 3 deletions Maskbook/Wallet/WalletCore/WalletCoreStorage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -167,9 +167,7 @@ extension WalletCoreStorage {
try viewContext.saveOrRollback()
return false
}
// Here is the conversion of some abnormal addresses returned from metamask to normal addresses.
let checksumAddress = EthereumAddress.toChecksumAddress(address) ?? address
let account = Account(session: session, address: checksumAddress)
let account = Account(session: session, address: address)
viewContext.insert(account)
try viewContext.saveOrRollback()
return true
Expand Down