fix(Profile): Fix crashing when showcase collectible having disabled chainIds (#14252)
Close #14243
This commit is contained in:
parent
65791a8e87
commit
d86be3a970
|
@ -204,5 +204,5 @@ proc requestProfileShowcaseForContact*(self: Controller, contactId: string, vali
|
|||
proc fetchProfileShowcaseAccountsByAddress*(self: Controller, address: string) =
|
||||
self.contactsService.fetchProfileShowcaseAccountsByAddress(address)
|
||||
|
||||
proc getChainIds*(self: Controller): seq[int] =
|
||||
self.networkService.getCurrentNetworks().map(n => n.chainId)
|
||||
proc getEnabledChainIds*(self: Controller): seq[int] =
|
||||
return self.networkService.getCurrentNetworks().filter(n => n.isEnabled).map(n => n.chainId)
|
|
@ -8,6 +8,7 @@ import ../../../../global/global_singleton
|
|||
|
||||
import ../../../../core/eventemitter
|
||||
import app_service/common/types
|
||||
import app_service/common/utils as utils
|
||||
import app_service/service/contacts/dto/contacts as contacts_dto
|
||||
import app_service/service/contacts/service as contacts_service
|
||||
import app_service/service/chat/service as chat_service
|
||||
|
@ -380,7 +381,8 @@ method loadProfileShowcase(self: Module, profileShowcase: ProfileShowcaseDto, va
|
|||
showcaseKey: collectible.toCombinedCollectibleId(),
|
||||
showcasePosition: collectible.order
|
||||
))
|
||||
collectibleChainIds.add(collectible.chainId)
|
||||
if not collectibleChainIds.contains(collectible.chainId):
|
||||
collectibleChainIds.add(collectible.chainId)
|
||||
self.view.loadProfileShowcaseContactCollectibles(collectibleItems)
|
||||
|
||||
var assetItems: seq[ShowcaseContactGenericItem] = @[]
|
||||
|
@ -409,9 +411,10 @@ method loadProfileShowcase(self: Module, profileShowcase: ProfileShowcaseDto, va
|
|||
self.showcaseForAContactLoading = false
|
||||
self.view.emitShowcaseForAContactLoadingChangedSignal()
|
||||
else:
|
||||
# NOTE: this implementation does not respect testnet setting
|
||||
# to fix use SIGNAL_WALLET_ACCOUNT_NETWORK_ENABLED_UPDATED and getChainIds() to intersect with collectibleChainIds
|
||||
self.collectiblesController.setFilterAddressesAndChains(accountAddresses, collectibleChainIds)
|
||||
let enabledChainIds = self.controller.getEnabledChainIds()
|
||||
|
||||
let combinedNetworks = utils.intersectSeqs(collectibleChainIds, enabledChainIds)
|
||||
self.collectiblesController.setFilterAddressesAndChains(accountAddresses, combinedNetworks)
|
||||
self.controller.requestProfileShowcaseForContact(self.showcasePublicKey, true)
|
||||
|
||||
method fetchProfileShowcaseAccountsByAddress*(self: Module, address: string) =
|
||||
|
@ -425,4 +428,4 @@ method getShowcaseCollectiblesModel*(self: Module): QVariant =
|
|||
return self.collectiblesController.getModelAsVariant()
|
||||
|
||||
method isShowcaseForAContactLoading*(self: Module): bool =
|
||||
return self.showcaseForAContactLoading
|
||||
return self.showcaseForAContactLoading
|
||||
|
|
|
@ -87,3 +87,10 @@ proc isPathOutOfTheDefaultStatusDerivationTree*(path: string): bool =
|
|||
|
||||
proc contractUniqueKey*(chainId: int, contractAddress: string): string =
|
||||
return $chainId & "_" & contractAddress
|
||||
|
||||
proc intersectSeqs*[T](seq1, seq2: seq[T]): seq[T] =
|
||||
var result: seq[T] = @[]
|
||||
for item in seq1:
|
||||
if item in seq2:
|
||||
result.add(item)
|
||||
return result
|
Loading…
Reference in New Issue