Browse Source

Handle avatar on member creation and update

Theophile Sandoz 3 years ago
parent
commit
0e0b3e2a24
1 changed files with 16 additions and 4 deletions
  1. 16 4
      query-node/mappings/src/membership.ts

+ 16 - 4
query-node/mappings/src/membership.ts

@@ -27,6 +27,7 @@ import {
   LeaderInvitationQuotaUpdatedEvent,
   MembershipEntryPaid,
   MembershipEntryInvited,
+  AvatarUri,
 } from 'query-node/dist/model'
 
 async function getMemberById(store: DatabaseManager, id: MemberId): Promise<Membership> {
@@ -69,16 +70,22 @@ async function createNewMemberFromParams(
   params: BuyMembershipParameters | InviteMembershipParameters
 ): Promise<Membership> {
   const { defaultInviteCount } = await getLatestMembershipSystemSnapshot(store)
-  const { root_account: rootAccount, controller_account: controllerAccount, handle, metadata: metatadaBytes } = params
-  const metadata = deserializeMetadata(MembershipMetadata, metatadaBytes)
+  const { root_account: rootAccount, controller_account: controllerAccount, handle, metadata: metadataBytes } = params
+  const metadata = deserializeMetadata(MembershipMetadata, metadataBytes)
   const eventTime = new Date(event.blockTimestamp)
 
+  let avatar: AvatarUri | undefined
+  if (metadata?.avatarUri) {
+    avatar = new AvatarUri()
+    avatar.avatarUri = metadata.avatarUri
+  }
+
   const metadataEntity = new MemberMetadata({
     createdAt: eventTime,
     updatedAt: eventTime,
     name: metadata?.name || undefined,
     about: metadata?.about || undefined,
-    // TODO: avatar
+    avatar,
   })
 
   const member = new Membership({
@@ -158,7 +165,12 @@ export async function members_MemberProfileUpdated({ store, event }: EventContex
     member.metadata.about = (metadata.about || null) as string | undefined
     member.metadata.updatedAt = eventTime
   }
-  // TODO: avatar
+
+  if (typeof metadata?.avatarUri === 'string') {
+    member.metadata.avatar = new AvatarUri()
+    member.metadata.avatar.avatarUri = metadata.avatarUri
+  }
+
   if (newHandle.isSome) {
     member.handle = bytesToString(newHandle.unwrap())
     member.updatedAt = eventTime