From febc2d061f74c06be49b563f1be407da628692ea Mon Sep 17 00:00:00 2001 From: Dario Gabriel Lipicar Date: Thu, 12 Oct 2023 10:44:24 -0300 Subject: [PATCH] feat(@desktop/wallet): support received community collectibles event Fixes #12425 --- src/backend/collectibles.nim | 13 +++++++++++++ src/backend/collectibles_types.nim | 20 ++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/backend/collectibles.nim b/src/backend/collectibles.nim index 66f513f119..59d01e4690 100644 --- a/src/backend/collectibles.nim +++ b/src/backend/collectibles.nim @@ -19,6 +19,7 @@ const eventCollectiblesOwnershipUpdateStarted*: string = "wallet-collectibles-ow const eventCollectiblesOwnershipUpdatePartial*: string = "wallet-collectibles-ownership-update-partial" const eventCollectiblesOwnershipUpdateFinished*: string = "wallet-collectibles-ownership-update-finished" const eventCollectiblesOwnershipUpdateFinishedWithError*: string = "wallet-collectibles-ownership-update-finished-with-error" +const eventCommunityCollectiblesReceived*: string = "wallet-collectibles-community-collectibles-received" const eventOwnedCollectiblesFilteringDone*: string = "wallet-owned-collectibles-filtering-done" const eventGetCollectiblesDetailsDone*: string = "wallet-get-collectibles-details-done" @@ -57,6 +58,9 @@ type collectibles*: seq[CollectibleDetails] errorCode*: ErrorCode + CommunityCollectiblesReceivedPayload* = object + collectibles*: seq[CommunityCollectibleHeader] + # CollectibleOwnershipState proc `$`*(self: OwnershipStatus): string = return fmt"""OwnershipStatus( @@ -109,6 +113,15 @@ proc fromJson*(e: JsonNode, T: typedesc[GetCollectiblesDetailsResponse]): GetCol errorCode: ErrorCode(e["errorCode"].getInt()) ) +proc fromJson*(e: JsonNode, T: typedesc[CommunityCollectiblesReceivedPayload]): CommunityCollectiblesReceivedPayload {.inline.} = + var collectibles: seq[CommunityCollectibleHeader] = @[] + for item in e.getElems(): + collectibles.add(fromJson(item, CommunityCollectibleHeader)) + + result = T( + collectibles: collectibles + ) + rpc(getCollectiblesByOwnerWithCursor, "wallet"): chainId: int address: string diff --git a/src/backend/collectibles_types.nim b/src/backend/collectibles_types.nim index 7b5e234972..949819190c 100644 --- a/src/backend/collectibles_types.nim +++ b/src/backend/collectibles_types.nim @@ -94,6 +94,12 @@ type collectionImageUrl*: string communityInfo*: Option[CollectibleCommunityInfo] + # Mirrors services/wallet/collectibles/types.go CommunityCollectibleHeader + CommunityCollectibleHeader* = ref object of RootObj + id* : CollectibleUniqueID + name*: string + communityHeader*: CollectibleCommunityHeader + # Mirrors services/wallet/thirdparty/collectible_types.go TokenBalance CollectibleBalance* = ref object tokenId*: UInt256 @@ -375,6 +381,20 @@ proc fromJson*(t: JsonNode, T: typedesc[ref CollectibleDetails]): ref Collectibl result = new(CollectibleDetails) result[] = fromJson(t, CollectibleDetails) +# CommunityCollectibleHeader +proc `$`*(self: CommunityCollectibleHeader): string = + return fmt"""CommunityCollectibleHeader( + id:{self.id}, + name:{self.name}, + communityHeader:{self.communityHeader} + )""" + +proc fromJson*(t: JsonNode, T: typedesc[CommunityCollectibleHeader]): CommunityCollectibleHeader {.inline.} = + result = CommunityCollectibleHeader() + result.id = fromJson(t["id"], CollectibleUniqueID) + result.name = t["name"].getStr() + result.communityHeader = fromJson(t[communityHeaderField], CollectibleCommunityHeader) + # CollectibleBalance proc `$`*(self: CollectibleBalance): string = return fmt"""CollectibleBalance(