Skip to content

Commit

Permalink
feat: implement claim page
Browse files Browse the repository at this point in the history
  • Loading branch information
beeman committed Apr 8, 2024
1 parent b9a7056 commit 308c2ea
Show file tree
Hide file tree
Showing 13 changed files with 303 additions and 1 deletion.
2 changes: 2 additions & 0 deletions api-schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ type Claim {
account: String!
amount: String!
avatarUrl: String
claimUrl: String!
community: Community
communityId: String!
createdAt: DateTime
Expand Down Expand Up @@ -463,6 +464,7 @@ type Query {
userFindOneWallet(publicKey: String!): Wallet
userGetClaim(claimId: String!): Claim!
userGetClaims: [Claim!]!
userGetClaimsByProvider(provider: IdentityProvider!, providerId: String!): [Claim!]!
userGetMinter(account: String!): TokenGatorMinter!
userGetMinterAssets(account: String!): JSON!
userGetMinters: TokenGatorMinter!
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Injectable } from '@nestjs/common'
import { IdentityProvider } from '@prisma/client'
import { ApiClaimDataService } from './api-claim-data.service'
import { ClaimUserCreateInput } from './dto/claim-user-create.input'
import { ClaimUserFindManyInput } from './dto/claim-user-find-many.input'
Expand Down Expand Up @@ -42,4 +43,8 @@ export class ApiClaimDataUserService {
async userGetClaim(userId: string, claimId: string) {
return this.data.getClaim(userId, claimId)
}

async userGetClaimsByProvider(provider: IdentityProvider, providerId: string) {
return this.data.getClaimsByProvider(provider, providerId)
}
}
22 changes: 22 additions & 0 deletions libs/api/claim/data-access/src/lib/api-claim-data.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,4 +100,26 @@ export class ApiClaimDataService {
}
return found
}

async getClaimsByProvider(provider: IdentityProvider, providerId: string) {
return this.core.data.claim
.findMany({
where: { provider, providerId },
include: { community: true },
})
.then(async (claims) => {
const uniqueMinters = Array.from(new Set(claims.map((claim) => claim.account)))
const minters = await Promise.all([...uniqueMinters.map((minter) => this.minterCache.fetch(minter))])

return claims.map((claim) => {
const minter = minters.find((m) => m?.publicKey.toString() === claim.account)

return {
...claim,
minter,
// identity,
}
})
})
}
}
9 changes: 9 additions & 0 deletions libs/api/claim/feature/src/lib/api-claim-user.resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
ClaimUserFindManyInput,
ClaimUserUpdateInput,
} from '@tokengator/api-claim-data-access'
import { IdentityProvider } from '@tokengator/api-identity-data-access'

@Resolver()
@UseGuards(ApiAuthGraphQLUserGuard)
Expand All @@ -30,6 +31,14 @@ export class ApiClaimUserResolver {
return this.service.user.userGetClaim(userId, claimId)
}

@Query(() => [Claim])
userGetClaimsByProvider(
@Args({ name: 'provider', type: () => IdentityProvider }) provider: IdentityProvider,
@Args('providerId') providerId: string,
) {
return this.service.user.userGetClaimsByProvider(provider, providerId)
}

@Query(() => [Claim])
userGetClaims(@CtxUserId() userId: string) {
return this.service.user.userGetClaims(userId)
Expand Down
5 changes: 5 additions & 0 deletions libs/api/claim/feature/src/lib/api-claim.resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,9 @@ export class ApiClaimResolver {
? `${claim.provider}: ${ellipsify(claim.providerId)} `
: claim.providerId
}

@ResolveField(() => String)
claimUrl(@Parent() claim: Claim) {
return `/claims/${claim.provider}/${claim.providerId}`
}
}
141 changes: 141 additions & 0 deletions libs/sdk/src/generated/graphql-sdk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ export type Claim = {
account: Scalars['String']['output']
amount: Scalars['String']['output']
avatarUrl?: Maybe<Scalars['String']['output']>
claimUrl: Scalars['String']['output']
community?: Maybe<Community>
communityId: Scalars['String']['output']
createdAt?: Maybe<Scalars['DateTime']['output']>
Expand Down Expand Up @@ -710,6 +711,7 @@ export type Query = {
userFindOneWallet?: Maybe<Wallet>
userGetClaim: Claim
userGetClaims: Array<Claim>
userGetClaimsByProvider: Array<Claim>
userGetMinter: TokenGatorMinter
userGetMinterAssets: Scalars['JSON']['output']
userGetMinters: TokenGatorMinter
Expand Down Expand Up @@ -874,6 +876,11 @@ export type QueryUserGetClaimArgs = {
claimId: Scalars['String']['input']
}

export type QueryUserGetClaimsByProviderArgs = {
provider: IdentityProvider
providerId: Scalars['String']['input']
}

export type QueryUserGetMinterArgs = {
account: Scalars['String']['input']
}
Expand Down Expand Up @@ -1290,6 +1297,7 @@ export type ClaimDetailsFragment = {
providerId: string
status: ClaimStatus
name: string
claimUrl: string
updatedAt?: Date | null
identity?: {
__typename?: 'Identity'
Expand Down Expand Up @@ -1381,6 +1389,7 @@ export type AdminFindManyClaimQuery = {
providerId: string
status: ClaimStatus
name: string
claimUrl: string
updatedAt?: Date | null
identity?: {
__typename?: 'Identity'
Expand Down Expand Up @@ -1482,6 +1491,7 @@ export type AdminFindOneClaimQuery = {
providerId: string
status: ClaimStatus
name: string
claimUrl: string
updatedAt?: Date | null
identity?: {
__typename?: 'Identity'
Expand Down Expand Up @@ -1572,6 +1582,7 @@ export type AdminCreateClaimMutation = {
providerId: string
status: ClaimStatus
name: string
claimUrl: string
updatedAt?: Date | null
identity?: {
__typename?: 'Identity'
Expand Down Expand Up @@ -1663,6 +1674,7 @@ export type AdminUpdateClaimMutation = {
providerId: string
status: ClaimStatus
name: string
claimUrl: string
updatedAt?: Date | null
identity?: {
__typename?: 'Identity'
Expand Down Expand Up @@ -1761,6 +1773,7 @@ export type UserFindManyClaimQuery = {
providerId: string
status: ClaimStatus
name: string
claimUrl: string
updatedAt?: Date | null
identity?: {
__typename?: 'Identity'
Expand Down Expand Up @@ -1862,6 +1875,7 @@ export type UserGetClaimQuery = {
providerId: string
status: ClaimStatus
name: string
claimUrl: string
updatedAt?: Date | null
identity?: {
__typename?: 'Identity'
Expand Down Expand Up @@ -1933,6 +1947,98 @@ export type UserGetClaimQuery = {
}
}

export type UserGetClaimsByProviderQueryVariables = Exact<{
provider: IdentityProvider
providerId: Scalars['String']['input']
}>

export type UserGetClaimsByProviderQuery = {
__typename?: 'Query'
items: Array<{
__typename?: 'Claim'
createdAt?: Date | null
id: string
communityId: string
account: string
amount: string
avatarUrl?: string | null
signature?: string | null
provider: IdentityProvider
providerId: string
status: ClaimStatus
name: string
claimUrl: string
updatedAt?: Date | null
identity?: {
__typename?: 'Identity'
createdAt?: Date | null
expired?: boolean | null
id: string
name?: string | null
profile?: any | null
provider: IdentityProvider
providerId: string
updatedAt?: Date | null
url?: string | null
verified?: boolean | null
} | null
community?: {
__typename?: 'Community'
createdAt?: Date | null
id: string
name: string
slug: string
description: string
iconUrl?: string | null
logoUrl?: string | null
publicUrl?: string | null
updatedAt?: Date | null
} | null
minter?: {
__typename?: 'TokenGatorMinter'
publicKey: string
bump: number
communityId: string
name: string
description: string
imageUrl: string
feePayer: string
authorities: Array<string>
paymentConfig: {
__typename?: 'TokenGatorMinterPaymentConfig'
mint: string
days: number
amount: number
expiresAt: string
price: string
}
minterConfig: {
__typename?: 'TokenGatorMinterConfig'
mint: string
applicationConfig: {
__typename?: 'TokenGatorMinterApplicationConfig'
identities: Array<IdentityProvider>
paymentConfig: {
__typename?: 'TokenGatorMinterPaymentConfig'
mint: string
days: number
amount: number
expiresAt: string
price: string
}
}
metadataConfig: {
__typename?: 'TokenGatorMinterMetadataConfig'
metadata: Array<Array<string>>
name: string
symbol: string
uri: string
}
}
} | null
}>
}

export type UserGetClaimsQueryVariables = Exact<{ [key: string]: never }>

export type UserGetClaimsQuery = {
Expand All @@ -1950,6 +2056,7 @@ export type UserGetClaimsQuery = {
providerId: string
status: ClaimStatus
name: string
claimUrl: string
updatedAt?: Date | null
identity?: {
__typename?: 'Identity'
Expand Down Expand Up @@ -2040,6 +2147,7 @@ export type UserFindOneClaimQuery = {
providerId: string
status: ClaimStatus
name: string
claimUrl: string
updatedAt?: Date | null
identity?: {
__typename?: 'Identity'
Expand Down Expand Up @@ -2130,6 +2238,7 @@ export type UserCreateClaimMutation = {
providerId: string
status: ClaimStatus
name: string
claimUrl: string
updatedAt?: Date | null
identity?: {
__typename?: 'Identity'
Expand Down Expand Up @@ -2221,6 +2330,7 @@ export type UserUpdateClaimMutation = {
providerId: string
status: ClaimStatus
name: string
claimUrl: string
updatedAt?: Date | null
identity?: {
__typename?: 'Identity'
Expand Down Expand Up @@ -4348,6 +4458,7 @@ export const ClaimDetailsFragmentDoc = gql`
providerId
status
name
claimUrl
updatedAt
identity {
...IdentityDetails
Expand Down Expand Up @@ -4636,6 +4747,14 @@ export const UserGetClaimDocument = gql`
}
${ClaimDetailsFragmentDoc}
`
export const UserGetClaimsByProviderDocument = gql`
query userGetClaimsByProvider($provider: IdentityProvider!, $providerId: String!) {
items: userGetClaimsByProvider(provider: $provider, providerId: $providerId) {
...ClaimDetails
}
}
${ClaimDetailsFragmentDoc}
`
export const UserGetClaimsDocument = gql`
query userGetClaims {
items: userGetClaims {
Expand Down Expand Up @@ -5346,6 +5465,7 @@ const AdminUpdateClaimDocumentString = print(AdminUpdateClaimDocument)
const AdminDeleteClaimDocumentString = print(AdminDeleteClaimDocument)
const UserFindManyClaimDocumentString = print(UserFindManyClaimDocument)
const UserGetClaimDocumentString = print(UserGetClaimDocument)
const UserGetClaimsByProviderDocumentString = print(UserGetClaimsByProviderDocument)
const UserGetClaimsDocumentString = print(UserGetClaimsDocument)
const UserFindOneClaimDocumentString = print(UserFindOneClaimDocument)
const UserCreateClaimDocumentString = print(UserCreateClaimDocument)
Expand Down Expand Up @@ -5720,6 +5840,27 @@ export function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper =
variables,
)
},
userGetClaimsByProvider(
variables: UserGetClaimsByProviderQueryVariables,
requestHeaders?: GraphQLClientRequestHeaders,
): Promise<{
data: UserGetClaimsByProviderQuery
errors?: GraphQLError[]
extensions?: any
headers: Headers
status: number
}> {
return withWrapper(
(wrappedRequestHeaders) =>
client.rawRequest<UserGetClaimsByProviderQuery>(UserGetClaimsByProviderDocumentString, variables, {
...requestHeaders,
...wrappedRequestHeaders,
}),
'userGetClaimsByProvider',
'query',
variables,
)
},
userGetClaims(
variables?: UserGetClaimsQueryVariables,
requestHeaders?: GraphQLClientRequestHeaders,
Expand Down
7 changes: 7 additions & 0 deletions libs/sdk/src/graphql/feature-claim.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ fragment ClaimDetails on Claim {
providerId
status
name
claimUrl
updatedAt
identity {
...IdentityDetails
Expand Down Expand Up @@ -72,6 +73,12 @@ query userGetClaim($claimId: String!) {
}
}

query userGetClaimsByProvider($provider: IdentityProvider!, $providerId: String!) {
items: userGetClaimsByProvider(provider: $provider, providerId: $providerId) {
...ClaimDetails
}
}

query userGetClaims {
items: userGetClaims {
...ClaimDetails
Expand Down
1 change: 1 addition & 0 deletions libs/web/claim/data-access/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ export * from './lib/use-admin-find-many-claim'
export * from './lib/use-admin-find-one-claim'
export * from './lib/use-user-find-many-claim'
export * from './lib/use-user-find-one-claim'
export { useUserGetClaimsByProvider } from './lib/use-user-get-claims-by-provider'
Loading

0 comments on commit 308c2ea

Please sign in to comment.