diff --git a/apps/token/src/i18n/translations/dev.json b/apps/token/src/i18n/translations/dev.json
index 8fd42589f..3d0881d68 100644
--- a/apps/token/src/i18n/translations/dev.json
+++ b/apps/token/src/i18n/translations/dev.json
@@ -686,5 +686,6 @@
"MoreMarketsInfo": "To see Explorer data on existing markets visit",
"MoreAssetsInfo": "To see Explorer data on existing assets visit",
"ProposalNotFound": "Proposal not found",
- "ProposalNotFoundDetails": "The proposal you are looking for is not here, it may have been enacted before the last chain restore. You could check the Vega forums/discord instead for information about it."
+ "ProposalNotFoundDetails": "The proposal you are looking for is not here, it may have been enacted before the last chain restore. You could check the Vega forums/discord instead for information about it.",
+ "FreeformProposal": "Freeform proposal"
}
diff --git a/apps/token/src/routes/governance/components/proposal-change-table/proposal-change-table.spec.tsx b/apps/token/src/routes/governance/components/proposal-change-table/proposal-change-table.spec.tsx
index c846c1272..ce763abbd 100644
--- a/apps/token/src/routes/governance/components/proposal-change-table/proposal-change-table.spec.tsx
+++ b/apps/token/src/routes/governance/components/proposal-change-table/proposal-change-table.spec.tsx
@@ -79,6 +79,28 @@ it('Changes data based on if data is in future or past', () => {
).toBeInTheDocument();
});
+it('Does not render enactment time for freeform proposal', () => {
+ const proposal = generateProposal({
+ state: ProposalState.STATE_ENACTED,
+ terms: {
+ __typename: 'ProposalTerms',
+ change: {
+ __typename: 'NewFreeform',
+ },
+ },
+ });
+ render();
+ expect(screen.queryByText('Enacted on')).not.toBeInTheDocument();
+ expect(
+ screen.queryByText(
+ format(
+ new Date(proposal.terms.enactmentDatetime || 0),
+ DATE_FORMAT_DETAILED
+ )
+ )
+ ).not.toBeInTheDocument();
+});
+
it('Renders error details and rejection reason if present', () => {
const errorDetails = 'Error message';
const proposal = generateProposal({
diff --git a/apps/token/src/routes/governance/components/proposal-change-table/proposal-change-table.tsx b/apps/token/src/routes/governance/components/proposal-change-table/proposal-change-table.tsx
index 558b1596b..466ae2e41 100644
--- a/apps/token/src/routes/governance/components/proposal-change-table/proposal-change-table.tsx
+++ b/apps/token/src/routes/governance/components/proposal-change-table/proposal-change-table.tsx
@@ -31,12 +31,14 @@ export const ProposalChangeTable = ({ proposal }: ProposalChangeTableProps) => {
: t('closedOn')}
{format(new Date(terms.closingDatetime), DATE_FORMAT_DETAILED)}
-
- {isFuture(new Date(terms.enactmentDatetime || 0))
- ? t('proposedEnactment')
- : t('enactedOn')}
- {format(new Date(terms.enactmentDatetime || 0), DATE_FORMAT_DETAILED)}
-
+ {terms.change.__typename !== 'NewFreeform' ? (
+
+ {isFuture(new Date(terms.enactmentDatetime || 0))
+ ? t('proposedEnactment')
+ : t('enactedOn')}
+ {format(new Date(terms.enactmentDatetime || 0), DATE_FORMAT_DETAILED)}
+
+ ) : null}
{t('proposedBy')}
{proposal.party.id}
diff --git a/apps/token/src/routes/governance/components/proposal-detail-header/proposal-header.tsx b/apps/token/src/routes/governance/components/proposal-detail-header/proposal-header.tsx
index 28c392b69..18d0c786d 100644
--- a/apps/token/src/routes/governance/components/proposal-detail-header/proposal-header.tsx
+++ b/apps/token/src/routes/governance/components/proposal-detail-header/proposal-header.tsx
@@ -73,8 +73,7 @@ export const ProposalHeader = ({ proposal }: { proposal: ProposalFields }) => {
break;
}
case 'NewFreeform': {
- details = `${proposal.id}`;
-
+ details = `${t('FreeformProposal')}: ${proposal.id}`;
break;
}
}