From 1b163bcb93c8b7bb09cbbb017dd3b1b7b6ace9ce Mon Sep 17 00:00:00 2001 From: Traumschule <31551045+traumschule@users.noreply.github.com> Date: Mon, 12 Dec 2022 14:44:28 +0000 Subject: [PATCH] Show new invitation quota on `ProposalDetails` (#3902) (#3926) * Show new invitation quota on `ProposalDetails` (#3902) * Generate SetMembershipLeadInvitationQuotaProposalDetails * fix amount -> count type in `ProposalDetails` * Do not use currency for setMembershipLeadInvitationQuota * lint * fix field and test Co-authored-by: Joystream Stats Co-authored-by: Oleksandr Korniienko --- .../SetMembershipLeadInvitationQuota.tsx | 11 ++++------- .../AddNewProposal/getSpecificParameters.ts | 4 ++-- .../proposals/modals/AddNewProposal/helpers.ts | 6 +++--- .../__generated__/proposals.generated.tsx | 10 ++++++---- .../ui/src/proposals/queries/proposals.graphql | 3 +++ .../ui/src/proposals/types/ProposalDetails.ts | 17 ++++++++++++++--- 6 files changed, 32 insertions(+), 19 deletions(-) diff --git a/packages/ui/src/proposals/modals/AddNewProposal/components/SpecificParameters/SetMembershipLeadInvitationQuota.tsx b/packages/ui/src/proposals/modals/AddNewProposal/components/SpecificParameters/SetMembershipLeadInvitationQuota.tsx index ac6f010f54..663157f294 100644 --- a/packages/ui/src/proposals/modals/AddNewProposal/components/SpecificParameters/SetMembershipLeadInvitationQuota.tsx +++ b/packages/ui/src/proposals/modals/AddNewProposal/components/SpecificParameters/SetMembershipLeadInvitationQuota.tsx @@ -1,7 +1,6 @@ import React, { useEffect } from 'react' import { useFormContext } from 'react-hook-form' -import { CurrencyName } from '@/app/constants/currency' import { InputComponent, InputNumber } from '@/common/components/forms' import { Row } from '@/common/components/Modal' import { RowGapBlock } from '@/common/components/page/PageContent' @@ -29,22 +28,20 @@ export const SetMembershipLeadInvitationQuota = () => { { .required('Field is required'), }), setMembershipLeadInvitationQuota: Yup.object().shape({ - amount: BNSchema.test(moreThanMixed(0, 'Amount must be greater than zero')).required('Field is required'), + count: BNSchema.test(moreThanMixed(0, 'Quota must be greater than zero')).required('Field is required'), leadId: Yup.string().test('execution', (value) => !!value), }), setInitialInvitationBalance: Yup.object().shape({ diff --git a/packages/ui/src/proposals/queries/__generated__/proposals.generated.tsx b/packages/ui/src/proposals/queries/__generated__/proposals.generated.tsx index f2319c5511..5c61574321 100644 --- a/packages/ui/src/proposals/queries/__generated__/proposals.generated.tsx +++ b/packages/ui/src/proposals/queries/__generated__/proposals.generated.tsx @@ -1,9 +1,8 @@ import * as Types from '../../../common/api/queries/__generated__/baseTypes.generated' -import * as Apollo from '@apollo/client' import { gql } from '@apollo/client' import { MemberFieldsFragmentDoc } from '../../../memberships/queries/__generated__/members.generated' - +import * as Apollo from '@apollo/client' const defaultOptions = {} as const export type WorkerProposalDetailsFragment = { __typename: 'Worker' @@ -387,7 +386,7 @@ export type ProposalWithDetailsFieldsFragment = { | { __typename: 'SetInitialInvitationBalanceProposalDetails'; newInitialInvitationBalance: string } | { __typename: 'SetInitialInvitationCountProposalDetails'; newInitialInvitationsCount: number } | { __typename: 'SetMaxValidatorCountProposalDetails'; newMaxValidatorCount: number } - | { __typename: 'SetMembershipLeadInvitationQuotaProposalDetails' } + | { __typename: 'SetMembershipLeadInvitationQuotaProposalDetails'; newLeadInvitationQuota: number } | { __typename: 'SetMembershipPriceProposalDetails'; newPrice: string } | { __typename: 'SetReferralCutProposalDetails'; newReferralCut: number } | { @@ -1210,7 +1209,7 @@ export type GetProposalQuery = { | { __typename: 'SetInitialInvitationBalanceProposalDetails'; newInitialInvitationBalance: string } | { __typename: 'SetInitialInvitationCountProposalDetails'; newInitialInvitationsCount: number } | { __typename: 'SetMaxValidatorCountProposalDetails'; newMaxValidatorCount: number } - | { __typename: 'SetMembershipLeadInvitationQuotaProposalDetails' } + | { __typename: 'SetMembershipLeadInvitationQuotaProposalDetails'; newLeadInvitationQuota: number } | { __typename: 'SetMembershipPriceProposalDetails'; newPrice: string } | { __typename: 'SetReferralCutProposalDetails'; newReferralCut: number } | { @@ -2004,6 +2003,9 @@ export const ProposalWithDetailsFieldsFragmentDoc = gql` ... on SetCouncilBudgetIncrementProposalDetails { newAmount } + ... on SetMembershipLeadInvitationQuotaProposalDetails { + newLeadInvitationQuota + } ... on SignalProposalDetails { text } diff --git a/packages/ui/src/proposals/queries/proposals.graphql b/packages/ui/src/proposals/queries/proposals.graphql index 28b7d05f90..3dbe2f3653 100644 --- a/packages/ui/src/proposals/queries/proposals.graphql +++ b/packages/ui/src/proposals/queries/proposals.graphql @@ -160,6 +160,9 @@ fragment ProposalWithDetailsFields on Proposal { ... on SetCouncilBudgetIncrementProposalDetails { newAmount } + ... on SetMembershipLeadInvitationQuotaProposalDetails { + newLeadInvitationQuota + } ... on SignalProposalDetails { text } diff --git a/packages/ui/src/proposals/types/ProposalDetails.ts b/packages/ui/src/proposals/types/ProposalDetails.ts index b91c714ee6..e1e5c2b4b2 100644 --- a/packages/ui/src/proposals/types/ProposalDetails.ts +++ b/packages/ui/src/proposals/types/ProposalDetails.ts @@ -58,7 +58,7 @@ export type GroupNameDetail = { } export type CountDetail = { - count: BN + count: number } export type ProposalDetail = { @@ -110,6 +110,8 @@ export type SignalDetails = ProposalDetailsNew<'signal', SignalTextDetail> export type SetMembershipPriceDetails = ProposalDetailsNew<'setMembershipPrice', AmountDetail> +export type SetMembershipLeadInvitationQuota = ProposalDetailsNew<'setMembershipLeadInvitationQuota', CountDetail> + export type SetCouncilBudgetIncrementDetails = ProposalDetailsNew<'setCouncilBudgetIncrement', AmountDetail> export type CancelWorkingGroupLeadOpeningDetails = ProposalDetailsNew< @@ -140,6 +142,7 @@ export type ProposalDetails = | SetWorkingGroupLeadRewardDetails | TerminateWorkingGroupLeadDetails | SetMembershipPriceDetails + | SetMembershipLeadInvitationQuota | SetCouncilBudgetIncrementDetails | SignalDetails | CancelWorkingGroupLeadOpeningDetails @@ -230,7 +233,7 @@ const asSetMaxValidatorCount: DetailsCast<'SetMaxValidatorCountProposalDetails'> fragment ): MaxValidatorCountDetails => ({ type: 'setMaxValidatorCount', - count: new BN(fragment.newMaxValidatorCount), + count: fragment.newMaxValidatorCount, }) const asFillGroupLeadOpening: DetailsCast<'FillWorkingGroupLeadOpeningProposalDetails'> = ( @@ -295,6 +298,13 @@ const asSetReferralCut: DetailsCast<'SetReferralCutProposalDetails'> = (fragment amount: new BN(fragment.newReferralCut), }) +const asSetMembershipLeadInvitationQuota: DetailsCast<'SetMembershipLeadInvitationQuotaProposalDetails'> = ( + fragment +): SetMembershipLeadInvitationQuota => ({ + type: 'setMembershipLeadInvitationQuota', + count: fragment.newLeadInvitationQuota, +}) + const asSetInitialInvitationBalance: DetailsCast<'SetInitialInvitationBalanceProposalDetails'> = ( fragment ): SetInitialInvitationBalanceDetails => ({ @@ -306,7 +316,7 @@ const asSetInitialInvitationCount: DetailsCast<'SetInitialInvitationCountProposa fragment ): SetInitialInvitationCountDetails => ({ type: 'setInitialInvitationCount', - count: new BN(fragment.newInitialInvitationsCount), + count: fragment.newInitialInvitationsCount, }) const asSetCouncilorReward: DetailsCast<'SetCouncilorRewardProposalDetails'> = ( @@ -345,6 +355,7 @@ const detailsCasts: Partial>> = SetInitialInvitationCountProposalDetails: asSetInitialInvitationCount, SetCouncilorRewardProposalDetails: asSetCouncilorReward, VetoProposalDetails: asVeto, + SetMembershipLeadInvitationQuotaProposalDetails: asSetMembershipLeadInvitationQuota, } export const asProposalDetails = (fragment: DetailsFragment): ProposalDetails => {