Skip to content

Commit

Permalink
Uplift of #25805 (squashed) to release
Browse files Browse the repository at this point in the history
  • Loading branch information
brave-builds committed Oct 4, 2024
1 parent 98d8c21 commit 8c7797d
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -141,11 +141,11 @@ struct EditUserAssetsView: View {
.frame(maxWidth: .infinity)
} else {
ForEach(tokens, id: \.token.id) { store in
if store.isCustomToken {
if store.isRemovable {
EditTokenView(assetStore: store, tokenNeedsTokenId: $tokenNeedsTokenId)
.swipeActions(edge: .trailing) {
Button(role: .destructive) {
removeCustomToken(store.token)
removeToken(store.token)
} label: {
Label(Strings.Wallet.delete, systemImage: "trash")
}
Expand Down Expand Up @@ -248,7 +248,7 @@ struct EditUserAssetsView: View {
)
}

private func removeCustomToken(_ token: BraveWallet.BlockchainToken) {
private func removeToken(_ token: BraveWallet.BlockchainToken) {
Task { @MainActor in
let success = await userAssetsStore.removeUserAsset(token: token)
isPresentingAssetRemovalError = !success
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public class AssetStore: Identifiable, ObservableObject, Equatable, WalletObserv
private let rpcService: BraveWalletJsonRpcService
private let ipfsApi: IpfsAPI
private let assetManager: WalletUserAssetManagerType
private(set) var isCustomToken: Bool
private(set) var isRemovable: Bool

var isObserving: Bool = false

Expand All @@ -39,15 +39,15 @@ public class AssetStore: Identifiable, ObservableObject, Equatable, WalletObserv
token: BraveWallet.BlockchainToken,
ipfsApi: IpfsAPI,
userAssetManager: WalletUserAssetManagerType,
isCustomToken: Bool,
isRemovable: Bool,
isVisible: Bool
) {
self.rpcService = rpcService
self.network = network
self.token = token
self.ipfsApi = ipfsApi
self.assetManager = userAssetManager
self.isCustomToken = isCustomToken
self.isRemovable = isRemovable
self.isVisible = isVisible
}

Expand Down Expand Up @@ -159,13 +159,13 @@ public class UserAssetsStore: ObservableObject, WalletObserverStore {
networks: networks,
visible: false
)
var allTokens = await self.blockchainRegistry.allTokens(
let allTokens = await self.blockchainRegistry.allTokens(
in: networks,
includingUserDeleted: false
)
// Filter `allTokens` to remove any tokens existing in `allUserAssets`. This is possible for ERC721 tokens in the registry without a `tokenId`, which requires the user to add as a custom token
let allUserTokens = allUserAssetsExcludeDeleted.flatMap(\.tokens)
allTokens = allTokens.map { assetsForNetwork in
let updatedAllTokens: [NetworkAssets] = allTokens.map { assetsForNetwork in
NetworkAssets(
network: assetsForNetwork.network,
tokens: assetsForNetwork.tokens.filter { token in
Expand All @@ -185,16 +185,15 @@ public class UserAssetsStore: ObservableObject, WalletObserverStore {
}
}
.map(\.id)
assetStores = (allUserAssetsExcludeDeleted + allTokens)
assetStores = (allUserAssetsExcludeDeleted + updatedAllTokens)
.sorted(by: { $0.sortOrder < $1.sortOrder })
.flatMap { assetsForNetwork in
assetsForNetwork.tokens.map { token in
var isCustomToken: Bool {
var isRemovable: Bool {
if token.contractAddress.isEmpty {
return false
}
// Any token with a tokenId should be considered a custom token.
if !token.tokenId.isEmpty {
if token.isErc721 || token.isErc1155 || token.isNft {
return true
}
return !allTokens.flatMap(\.tokens).contains(where: {
Expand All @@ -209,7 +208,7 @@ public class UserAssetsStore: ObservableObject, WalletObserverStore {
token: token,
ipfsApi: self.ipfsApi,
userAssetManager: assetManager,
isCustomToken: isCustomToken,
isRemovable: isRemovable,
isVisible: visibleIds.contains(where: {
$0.caseInsensitiveCompare(token.id) == .orderedSame
})
Expand Down

0 comments on commit 8c7797d

Please sign in to comment.