From cfca8aff8e8326cd26ad8a74aad17e6cddf49418 Mon Sep 17 00:00:00 2001 From: Senior Software Developer <69617937+mkbeefcake@users.noreply.github.com> Date: Wed, 27 Sep 2023 19:14:59 +0300 Subject: [PATCH] Fix past councils working groups data (#4553) * Fix-3225: used BudgetUpdatedEvent instead of BudgetSetEvent * Fix 3225 : updated test.tsx and mock server.ts * Fix 3225: updated newMissedRewardLevelReachedEvent's block range and removed budgetSetEvent * Fix 3225: fix lint issue --- .../hooks/usePastCouncilWorkingGroups.ts | 6 +++- .../__generated__/council.generated.tsx | 34 ++++++++++++++----- .../ui/src/council/queries/council.graphql | 14 +++++--- .../council/types/PastCouncilWorkingGroup.ts | 10 +++--- packages/ui/src/mocks/server.ts | 1 + .../test/council/pages/PastCouncil.test.tsx | 5 +-- 6 files changed, 51 insertions(+), 19 deletions(-) diff --git a/packages/ui/src/council/hooks/usePastCouncilWorkingGroups.ts b/packages/ui/src/council/hooks/usePastCouncilWorkingGroups.ts index 9b6ead72f8..3219f93600 100644 --- a/packages/ui/src/council/hooks/usePastCouncilWorkingGroups.ts +++ b/packages/ui/src/council/hooks/usePastCouncilWorkingGroups.ts @@ -24,7 +24,11 @@ export const usePastCouncilWorkingGroups = (id: string) => { workingGroups: data && data.workingGroups.map( - asPastCouncilWorkingGroup(data.budgetSetEvents, data.rewardPaidEvents, data.newMissedRewardLevelReachedEvents) + asPastCouncilWorkingGroup( + data.rewardPaidEvents, + data.newMissedRewardLevelReachedEvents, + data.budgetUpdatedEvents + ) ), } } diff --git a/packages/ui/src/council/queries/__generated__/council.generated.tsx b/packages/ui/src/council/queries/__generated__/council.generated.tsx index da1a5a5bc3..b912f0ad1e 100644 --- a/packages/ui/src/council/queries/__generated__/council.generated.tsx +++ b/packages/ui/src/council/queries/__generated__/council.generated.tsx @@ -129,7 +129,12 @@ export type PastCouncilProposalsFieldsFragment = { } } -export type PastCouncilWorkingGroupFieldsFragment = { __typename: 'WorkingGroup'; id: string; name: string } +export type PastCouncilWorkingGroupFieldsFragment = { + __typename: 'WorkingGroup' + id: string + name: string + budget: string +} export type PastCouncilBudgetSetEventFieldsFragment = { __typename: 'BudgetSetEvent' @@ -150,6 +155,12 @@ export type PastCouncilNewMissedRewardLevelReachedEventFieldsFragment = { newMissedRewardAmount: string } +export type PastCouncilBudgetUpdatedEventFieldsFragment = { + __typename: 'BudgetUpdatedEvent' + groupId: string + budgetChangeAmount: string +} + export type ElectedCouncilFieldsFragment = { __typename: 'ElectedCouncil' id: string @@ -975,8 +986,7 @@ export type GetPastCouncilWorkingGroupsQueryVariables = Types.Exact<{ export type GetPastCouncilWorkingGroupsQuery = { __typename: 'Query' - workingGroups: Array<{ __typename: 'WorkingGroup'; id: string; name: string }> - budgetSetEvents: Array<{ __typename: 'BudgetSetEvent'; newBudget: string; groupId: string }> + workingGroups: Array<{ __typename: 'WorkingGroup'; id: string; name: string; budget: string }> rewardPaidEvents: Array<{ __typename: 'RewardPaidEvent'; groupId: string; amount: string }> newMissedRewardLevelReachedEvents: Array<{ __typename: 'NewMissedRewardLevelReachedEvent' @@ -984,6 +994,7 @@ export type GetPastCouncilWorkingGroupsQuery = { workerId: string newMissedRewardAmount: string }> + budgetUpdatedEvents: Array<{ __typename: 'BudgetUpdatedEvent'; groupId: string; budgetChangeAmount: string }> } export type GetCurrentElectionQueryVariables = Types.Exact<{ [key: string]: never }> @@ -1499,6 +1510,7 @@ export const PastCouncilWorkingGroupFieldsFragmentDoc = gql` fragment PastCouncilWorkingGroupFields on WorkingGroup { id name + budget } ` export const PastCouncilBudgetSetEventFieldsFragmentDoc = gql` @@ -1520,6 +1532,12 @@ export const PastCouncilNewMissedRewardLevelReachedEventFieldsFragmentDoc = gql` newMissedRewardAmount } ` +export const PastCouncilBudgetUpdatedEventFieldsFragmentDoc = gql` + fragment PastCouncilBudgetUpdatedEventFields on BudgetUpdatedEvent { + groupId + budgetChangeAmount + } +` export const CouncilMemberFieldsFragmentDoc = gql` fragment CouncilMemberFields on CouncilMember { id @@ -2046,20 +2064,20 @@ export const GetPastCouncilWorkingGroupsDocument = gql` workingGroups { ...PastCouncilWorkingGroupFields } - budgetSetEvents(where: { inBlock_lte: $toBlock }, orderBy: [inBlock_DESC]) { - ...PastCouncilBudgetSetEventFields - } rewardPaidEvents(where: { inBlock_gte: $fromBlock, inBlock_lte: $toBlock }) { ...PastCouncilRewardPaidEventFields } - newMissedRewardLevelReachedEvents(where: { inBlock_lte: $toBlock }, orderBy: [inBlock_DESC]) { + newMissedRewardLevelReachedEvents(where: { inBlock_gte: $fromBlock, inBlock_lte: $toBlock }) { ...PastCouncilNewMissedRewardLevelReachedEventFields } + budgetUpdatedEvents(where: { inBlock_gte: $fromBlock, inBlock_lte: $toBlock }) { + ...PastCouncilBudgetUpdatedEventFields + } } ${PastCouncilWorkingGroupFieldsFragmentDoc} - ${PastCouncilBudgetSetEventFieldsFragmentDoc} ${PastCouncilRewardPaidEventFieldsFragmentDoc} ${PastCouncilNewMissedRewardLevelReachedEventFieldsFragmentDoc} + ${PastCouncilBudgetUpdatedEventFieldsFragmentDoc} ` /** diff --git a/packages/ui/src/council/queries/council.graphql b/packages/ui/src/council/queries/council.graphql index 3d7f8ab837..2ff730dbfb 100644 --- a/packages/ui/src/council/queries/council.graphql +++ b/packages/ui/src/council/queries/council.graphql @@ -21,6 +21,7 @@ fragment PastCouncilProposalsFields on ProposalVotedEvent { fragment PastCouncilWorkingGroupFields on WorkingGroup { id name + budget } fragment PastCouncilBudgetSetEventFields on BudgetSetEvent { @@ -39,6 +40,11 @@ fragment PastCouncilNewMissedRewardLevelReachedEventFields on NewMissedRewardLev newMissedRewardAmount } +fragment PastCouncilBudgetUpdatedEventFields on BudgetUpdatedEvent { + groupId + budgetChangeAmount +} + fragment ElectedCouncilFields on ElectedCouncil { id electedAtBlock @@ -243,15 +249,15 @@ query GetPastCouncilWorkingGroups($fromBlock: Int!, $toBlock: Int!) { workingGroups { ...PastCouncilWorkingGroupFields } - budgetSetEvents(where: { inBlock_lte: $toBlock }, orderBy: [inBlock_DESC]) { - ...PastCouncilBudgetSetEventFields - } rewardPaidEvents(where: { inBlock_gte: $fromBlock, inBlock_lte: $toBlock }) { ...PastCouncilRewardPaidEventFields } - newMissedRewardLevelReachedEvents(where: { inBlock_lte: $toBlock }, orderBy: [inBlock_DESC]) { + newMissedRewardLevelReachedEvents(where: { inBlock_gte: $fromBlock, inBlock_lte: $toBlock }) { ...PastCouncilNewMissedRewardLevelReachedEventFields } + budgetUpdatedEvents(where: { inBlock_gte: $fromBlock, inBlock_lte: $toBlock }) { + ...PastCouncilBudgetUpdatedEventFields + } } query GetCurrentElection { diff --git a/packages/ui/src/council/types/PastCouncilWorkingGroup.ts b/packages/ui/src/council/types/PastCouncilWorkingGroup.ts index 303e941939..d234de6552 100644 --- a/packages/ui/src/council/types/PastCouncilWorkingGroup.ts +++ b/packages/ui/src/council/types/PastCouncilWorkingGroup.ts @@ -3,7 +3,7 @@ import BN from 'bn.js' import { BN_ZERO } from '@/common/constants' import { arrayGroupBy } from '@/common/utils' import { - PastCouncilBudgetSetEventFieldsFragment, + PastCouncilBudgetUpdatedEventFieldsFragment, PastCouncilNewMissedRewardLevelReachedEventFieldsFragment, PastCouncilRewardPaidEventFieldsFragment, PastCouncilWorkingGroupFieldsFragment, @@ -34,9 +34,9 @@ const getTotalMissedReward = ( export const asPastCouncilWorkingGroup = ( - budgetSetEvents: PastCouncilBudgetSetEventFieldsFragment[], rewardPaidEvents: PastCouncilRewardPaidEventFieldsFragment[], - newMissedRewardLevelReachedEvents: PastCouncilNewMissedRewardLevelReachedEventFieldsFragment[] + newMissedRewardLevelReachedEvents: PastCouncilNewMissedRewardLevelReachedEventFieldsFragment[], + budgetUpdatedEvents: PastCouncilBudgetUpdatedEventFieldsFragment[] ) => (fields: PastCouncilWorkingGroupFieldsFragment): PastCouncilWorkingGroup => ({ id: fields.id, @@ -45,5 +45,7 @@ export const asPastCouncilWorkingGroup = .filter((rewardEvent) => rewardEvent.groupId === fields.id) .reduce((a, b) => a.add(new BN(b.amount)), BN_ZERO), totalMissedReward: getTotalMissedReward(newMissedRewardLevelReachedEvents, fields.id), - budget: new BN(budgetSetEvents.find((budgetEvent) => budgetEvent.groupId === fields.id)?.newBudget ?? 0), + budget: budgetUpdatedEvents + .filter((updatedEvent) => updatedEvent.groupId === fields.id) + .reduce((a, b) => a.add(new BN(b.budgetChangeAmount)), BN_ZERO), }) diff --git a/packages/ui/src/mocks/server.ts b/packages/ui/src/mocks/server.ts index 8a80976ef7..e2bb0fa170 100644 --- a/packages/ui/src/mocks/server.ts +++ b/packages/ui/src/mocks/server.ts @@ -110,6 +110,7 @@ export const makeServer = (environment = 'development', endpoints = DEFAULT_NETW workSubmittedEvents: getWhereResolver('WorkSubmittedEvent'), workSubmittedEventsConnection: getConnectionResolver('WorkSubmittedEventConnection'), budgetSetEvents: getWhereResolver('BudgetSetEvent'), + budgetUpdatedEvents: getWhereResolver('BudgetUpdatedEvent'), budgetSpendingEvents: getWhereResolver('BudgetSpendingEvent'), candidates: getWhereResolver('Candidate'), candidatesConnection: getConnectionResolver('CandidateConnection'), diff --git a/packages/ui/test/council/pages/PastCouncil.test.tsx b/packages/ui/test/council/pages/PastCouncil.test.tsx index 3c850d6faf..ad486e5c0f 100644 --- a/packages/ui/test/council/pages/PastCouncil.test.tsx +++ b/packages/ui/test/council/pages/PastCouncil.test.tsx @@ -350,13 +350,14 @@ describe('UI: Past Council page', () => { ) seedEvent( { + id: '1', inBlock: 1, createdAt: '2021-09-14T11:54:56.127Z', network: 'OLYMPIA', groupId: WORKER_DATA.groupId, - newBudget: 80000, + budgetChangeAmount: 80000, }, - 'BudgetSetEvent', + 'BudgetUpdatedEvent', mockServer.server ) seedEvent(