diff --git a/packages/ui/src/memberships/components/MemberListItem/components/MemberCreated.tsx b/packages/ui/src/memberships/components/MemberListItem/components/MemberCreated.tsx index 17cbabcc29..cd573c6c4e 100644 --- a/packages/ui/src/memberships/components/MemberListItem/components/MemberCreated.tsx +++ b/packages/ui/src/memberships/components/MemberListItem/components/MemberCreated.tsx @@ -9,12 +9,13 @@ export interface MemberCreatedProps { } export const MemberCreated = React.memo(({ member }: MemberCreatedProps) => { + const { entry, createdAt } = member + const block = entry.type === 'genesis' ? { number: 0, timestamp: createdAt } : entry.block + return ( - {new Date(member.createdAt).toLocaleDateString('en-GB')} - {member.entry && member.entry.type !== 'genesis' && ( - {member.entry.block.number} block - )} + {new Date(block.timestamp).toLocaleDateString('en-GB')} + {block.number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')} block ) }) diff --git a/packages/ui/src/memberships/queries/__generated__/members.generated.tsx b/packages/ui/src/memberships/queries/__generated__/members.generated.tsx index 07b83ba1c1..7ec89300fb 100644 --- a/packages/ui/src/memberships/queries/__generated__/members.generated.tsx +++ b/packages/ui/src/memberships/queries/__generated__/members.generated.tsx @@ -64,7 +64,15 @@ export type MemberWithDetailsFieldsFragment = { } entry: | { __typename: 'MembershipEntryGenesis'; phantom?: number | null } - | { __typename: 'MembershipEntryGifted' } + | { + __typename: 'MembershipEntryGifted' + membershipGiftedEvent?: { + __typename: 'MembershipGiftedEvent' + createdAt: any + inBlock: number + network: Types.Network + } | null + } | { __typename: 'MembershipEntryInvited' memberInvitedEvent?: { @@ -74,7 +82,15 @@ export type MemberWithDetailsFieldsFragment = { network: Types.Network } | null } - | { __typename: 'MembershipEntryMemberCreated' } + | { + __typename: 'MembershipEntryMemberCreated' + memberCreatedEvent?: { + __typename: 'MemberCreatedEvent' + createdAt: any + inBlock: number + network: Types.Network + } | null + } | { __typename: 'MembershipEntryPaid' membershipBoughtEvent?: { @@ -248,7 +264,15 @@ export type GetMembersWithDetailsQuery = { } entry: | { __typename: 'MembershipEntryGenesis'; phantom?: number | null } - | { __typename: 'MembershipEntryGifted' } + | { + __typename: 'MembershipEntryGifted' + membershipGiftedEvent?: { + __typename: 'MembershipGiftedEvent' + createdAt: any + inBlock: number + network: Types.Network + } | null + } | { __typename: 'MembershipEntryInvited' memberInvitedEvent?: { @@ -258,7 +282,15 @@ export type GetMembersWithDetailsQuery = { network: Types.Network } | null } - | { __typename: 'MembershipEntryMemberCreated' } + | { + __typename: 'MembershipEntryMemberCreated' + memberCreatedEvent?: { + __typename: 'MemberCreatedEvent' + createdAt: any + inBlock: number + network: Types.Network + } | null + } | { __typename: 'MembershipEntryPaid' membershipBoughtEvent?: { @@ -394,7 +426,15 @@ export type GetMemberQuery = { } entry: | { __typename: 'MembershipEntryGenesis'; phantom?: number | null } - | { __typename: 'MembershipEntryGifted' } + | { + __typename: 'MembershipEntryGifted' + membershipGiftedEvent?: { + __typename: 'MembershipGiftedEvent' + createdAt: any + inBlock: number + network: Types.Network + } | null + } | { __typename: 'MembershipEntryInvited' memberInvitedEvent?: { @@ -404,7 +444,15 @@ export type GetMemberQuery = { network: Types.Network } | null } - | { __typename: 'MembershipEntryMemberCreated' } + | { + __typename: 'MembershipEntryMemberCreated' + memberCreatedEvent?: { + __typename: 'MemberCreatedEvent' + createdAt: any + inBlock: number + network: Types.Network + } | null + } | { __typename: 'MembershipEntryPaid' membershipBoughtEvent?: { @@ -720,6 +768,20 @@ export const MemberWithDetailsFieldsFragmentDoc = gql` network } } + ... on MembershipEntryGifted { + membershipGiftedEvent { + createdAt + inBlock + network + } + } + ... on MembershipEntryMemberCreated { + memberCreatedEvent { + createdAt + inBlock + network + } + } ... on MembershipEntryGenesis { phantom } diff --git a/packages/ui/src/memberships/queries/members.graphql b/packages/ui/src/memberships/queries/members.graphql index b9a2ed65b0..191e1fd4c9 100644 --- a/packages/ui/src/memberships/queries/members.graphql +++ b/packages/ui/src/memberships/queries/members.graphql @@ -72,6 +72,20 @@ fragment MemberWithDetailsFields on Membership { network } } + ... on MembershipEntryGifted { + membershipGiftedEvent { + createdAt + inBlock + network + } + } + ... on MembershipEntryMemberCreated { + memberCreatedEvent { + createdAt + inBlock + network + } + } ... on MembershipEntryGenesis { phantom } diff --git a/packages/ui/src/memberships/types/Member.ts b/packages/ui/src/memberships/types/Member.ts index 1a7e07636c..b5b4c1695d 100644 --- a/packages/ui/src/memberships/types/Member.ts +++ b/packages/ui/src/memberships/types/Member.ts @@ -46,7 +46,17 @@ export type PaidEntry = { block: Block } -export type MemberEntry = GenesisEntry | InvitedEntry | PaidEntry +export type GiftedEntry = { + type: 'gifted' + block: Block +} + +export type CreatedEntry = { + type: 'created' + block: Block +} + +export type MemberEntry = GenesisEntry | InvitedEntry | PaidEntry | GiftedEntry | CreatedEntry // Temporary fix for: https://github.com/Joystream/pioneer/issues/1493 export type InvitedMember = Member // & { entry: InvitedEntry } diff --git a/packages/ui/src/memberships/types/casting.ts b/packages/ui/src/memberships/types/casting.ts index 2b0b8cfb4c..de7a04f5ea 100644 --- a/packages/ui/src/memberships/types/casting.ts +++ b/packages/ui/src/memberships/types/casting.ts @@ -46,8 +46,11 @@ const asMemberEntry = (entry: MemberWithDetailsFieldsFragment['entry']): MemberE return { type: 'paid', block: asBlock(entry.membershipBoughtEvent) } } else if (entry.__typename === 'MembershipEntryInvited' && entry.memberInvitedEvent) { return { type: 'invited', block: asBlock(entry.memberInvitedEvent) } + } else if (entry.__typename === 'MembershipEntryGifted' && entry.membershipGiftedEvent) { + return { type: 'gifted', block: asBlock(entry.membershipGiftedEvent) } + } else if (entry.__typename === 'MembershipEntryMemberCreated' && entry.memberCreatedEvent) { + return { type: 'created', block: asBlock(entry.memberCreatedEvent) } } - return { type: 'genesis' } }