Skip to content

Commit

Permalink
fix(governance): transfer proposals in batch (#6386)
Browse files Browse the repository at this point in the history
  • Loading branch information
asiaznik authored May 8, 2024
1 parent 7bfefbc commit cfffda5
Show file tree
Hide file tree
Showing 6 changed files with 97 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,10 @@ const ProposalDetails = ({
const featureFlags = useFeatureFlags((store) => store.flags);
const consoleLink = useLinks(DApp.Console);

const renderDetails = (terms: ProposalTermsFieldsFragment) => {
const renderDetails = (
terms: ProposalTermsFieldsFragment,
proposalId?: string | null
) => {
switch (terms.change?.__typename) {
case 'NewMarket': {
const getAsset = (terms: ProposalTermsFieldsFragment) => {
Expand Down Expand Up @@ -275,11 +278,11 @@ const ProposalDetails = ({
}
case 'NewTransfer':
return featureFlags.GOVERNANCE_TRANSFERS ? (
<NewTransferSummary proposalId={proposal?.id} />
<NewTransferSummary proposalId={proposalId} />
) : null;
case 'CancelTransfer':
return featureFlags.GOVERNANCE_TRANSFERS ? (
<CancelTransferSummary proposalId={proposal?.id} />
<CancelTransferSummary proposalId={proposalId} />
) : null;
default: {
return null;
Expand All @@ -292,7 +295,7 @@ const ProposalDetails = ({
if (proposal.__typename === 'Proposal') {
details = (
<div>
<div>{renderDetails(proposal.terms)}</div>
<div>{renderDetails(proposal.terms, proposal.id)}</div>
<VoteStateText
state={proposal.state}
closingDatetime={proposal.terms.closingDatetime}
Expand All @@ -319,7 +322,7 @@ const ProposalDetails = ({
>
<Indicator indicator={i + 1} />
<span>
<div>{renderDetails(p.terms)}</div>
<div>{renderDetails(p.terms, p.id)}</div>
<SubProposalStateText
state={proposal.state}
enactmentDatetime={p.terms.enactmentDatetime}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,13 +96,23 @@ export const ProposalChangeDetails = ({
break;
}
case 'NewTransfer': {
if (proposal.id) {
if (proposal.__typename === 'BatchProposal' && indicator) {
const proposalId = proposal.subProposals?.[indicator - 1]?.id;
if (proposalId) {
details = <ProposalTransferDetails proposalId={proposalId} />;
}
} else if (proposal.id) {
details = <ProposalTransferDetails proposalId={proposal.id} />;
}
break;
}
case 'CancelTransfer': {
if (proposal.id) {
if (proposal.__typename === 'BatchProposal' && indicator) {
const proposalId = proposal.subProposals?.[indicator - 1]?.id;
if (proposalId) {
details = <ProposalCancelTransferDetails proposalId={proposalId} />;
}
} else if (proposal.id) {
details = <ProposalCancelTransferDetails proposalId={proposal.id} />;
}
break;
Expand Down
24 changes: 24 additions & 0 deletions libs/proposals/src/lib/proposals-hooks/Proposal.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,18 @@ query NewTransferDetails($proposalId: ID!) {
}
}
}
... on BatchProposal {
subProposals {
id
terms {
change {
... on NewTransfer {
...NewTransferFields
}
}
}
}
}
}
}

Expand All @@ -129,5 +141,17 @@ query CancelTransferDetails($proposalId: ID!) {
}
}
}
... on BatchProposal {
subProposals {
id
terms {
change {
... on CancelTransfer {
...CancelTransferFields
}
}
}
}
}
}
}
28 changes: 26 additions & 2 deletions libs/proposals/src/lib/proposals-hooks/__generated__/Proposal.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
import { type SingleProposal } from '../../types';
import { type CancelTransferFieldsFragment } from '../proposals-data-provider';
import {
useCancelTransferDetailsQuery,
type CancelTransferDetailsQuery,
} from './__generated__/Proposal';
import { useCancelTransferDetailsQuery } from './__generated__/Proposal';

export const useCancelTransferProposalDetails = (
proposalId?: string | null
Expand All @@ -15,12 +11,20 @@ export const useCancelTransferProposalDetails = (
skip: !proposalId || proposalId.length === 0,
});

const proposal = data?.proposal as SingleProposal<
CancelTransferDetailsQuery['proposal']
>;
const proposal = data?.proposal;

if (proposal?.terms.change.__typename === 'CancelTransfer') {
return proposal?.terms.change as CancelTransferFieldsFragment;
if (
proposal?.__typename === 'Proposal' &&
proposal.terms.change.__typename === 'CancelTransfer'
) {
return proposal.terms.change as CancelTransferFieldsFragment;
}

if (proposal?.__typename === 'BatchProposal') {
const p = proposal.subProposals?.find((sub) => sub?.id === proposalId);
if (p && p.terms?.change.__typename === 'CancelTransfer') {
return p.terms.change as CancelTransferFieldsFragment;
}
}

return undefined;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
import { type SingleProposal } from '../../types';
import { type NewTransferFieldsFragment } from '../proposals-data-provider';
import {
useNewTransferDetailsQuery,
type NewTransferDetailsQuery,
} from './__generated__/Proposal';
import { useNewTransferDetailsQuery } from './__generated__/Proposal';

export const useNewTransferProposalDetails = (proposalId?: string | null) => {
const { data } = useNewTransferDetailsQuery({
Expand All @@ -13,13 +9,21 @@ export const useNewTransferProposalDetails = (proposalId?: string | null) => {
skip: !proposalId || proposalId.length === 0,
});

const proposal = data?.proposal as SingleProposal<
NewTransferDetailsQuery['proposal']
>;
const proposal = data?.proposal;

if (proposal?.terms.change.__typename === 'NewTransfer') {
if (
proposal?.__typename === 'Proposal' &&
proposal.terms.change.__typename === 'NewTransfer'
) {
return proposal?.terms.change as NewTransferFieldsFragment;
}

if (proposal?.__typename === 'BatchProposal') {
const p = proposal.subProposals?.find((sub) => sub?.id === proposalId);
if (p && p.terms?.change.__typename === 'NewTransfer') {
return p.terms.change as NewTransferFieldsFragment;
}
}

return undefined;
};

0 comments on commit cfffda5

Please sign in to comment.