Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
05f636d
Merge pull request #3200 from IntersectMBO/test
MSzalowski Mar 17, 2025
a400a03
Merge pull request #3217 from IntersectMBO/test
MSzalowski Mar 17, 2025
1c7bb38
Merge pull request #3218 from IntersectMBO/staging
MSzalowski Mar 17, 2025
65925e0
Merge pull request #3234 from IntersectMBO/test
MSzalowski Mar 18, 2025
5cb22cc
Merge pull request #3235 from IntersectMBO/staging
MSzalowski Mar 18, 2025
8a8e7fb
Merge pull request #3239 from IntersectMBO/test
MSzalowski Mar 18, 2025
4253b82
Merge pull request #3240 from IntersectMBO/staging
MSzalowski Mar 18, 2025
77c131c
Merge pull request #3257 from IntersectMBO/test
MSzalowski Mar 26, 2025
324a265
Merge pull request #3284 from IntersectMBO/staging
MSzalowski Mar 26, 2025
44ce08f
fixes layer caching when workflow is manually triggered
aaboyle878 Mar 28, 2025
e28c217
Merge pull request #3293 from IntersectMBO/fix/workflow-caching
aaboyle878 Mar 28, 2025
ed2c37e
fixes layer caching when workflow is manually triggered
aaboyle878 Mar 28, 2025
2279a33
Merge pull request #3294 from IntersectMBO/fix/workflow-caching
aaboyle878 Mar 28, 2025
4698c55
Merge pull request #3304 from IntersectMBO/test
MSzalowski Mar 31, 2025
d06b703
Merge pull request #3305 from IntersectMBO/staging
MSzalowski Mar 31, 2025
75634d9
Merge pull request #3316 from IntersectMBO/test
MSzalowski Apr 1, 2025
2aa5d7c
Merge pull request #3321 from IntersectMBO/test
MSzalowski Apr 1, 2025
675b63a
Merge pull request #3317 from IntersectMBO/staging
MSzalowski Apr 1, 2025
61d869c
Merge pull request #3324 from IntersectMBO/test
MSzalowski Apr 1, 2025
413bb6a
Merge pull request #3325 from IntersectMBO/staging
MSzalowski Apr 1, 2025
fe34c85
Merge pull request #3358 from IntersectMBO/test
MSzalowski Apr 2, 2025
f99a5e0
Merge pull request #3359 from IntersectMBO/staging
MSzalowski Apr 2, 2025
7c9c192
Merge pull request #3374 from IntersectMBO/test
MSzalowski Apr 3, 2025
bd8e204
Merge pull request #3375 from IntersectMBO/staging
MSzalowski Apr 3, 2025
c8e4c17
Merge pull request #3378 from IntersectMBO/test
bosko-m Apr 3, 2025
983bac8
Merge pull request #3379 from IntersectMBO/staging
bosko-m Apr 3, 2025
fde5c2e
Merge pull request #3421 from IntersectMBO/test
bosko-m Apr 8, 2025
e17637a
Merge pull request #3422 from IntersectMBO/test
bosko-m Apr 8, 2025
4b79929
Merge pull request #3434 from IntersectMBO/test
MSzalowski Apr 10, 2025
ca4b1b1
Merge pull request #3435 from IntersectMBO/staging
MSzalowski Apr 14, 2025
46688ef
Merge pull request #3485 from IntersectMBO/test
MSzalowski Apr 16, 2025
7e74e9d
Merge pull request #3486 from IntersectMBO/staging
MSzalowski Apr 16, 2025
b7a4b55
hotfix: Parse metadata validation metadata when is missing in db-sync
MSzalowski Apr 17, 2025
f81c98a
Merge pull request #3495 from IntersectMBO/hotfix/remove-authors-vali…
MSzalowski Apr 17, 2025
2a0c30a
Merge pull request #3501 from IntersectMBO/main
MSzalowski Apr 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,9 @@ export const DashboardGovernanceActionDetails = () => {
fullProposalId ?? "",
!state?.proposal || !state?.vote,
);
const proposal = (data ?? state)?.proposal;
const [extendedProposal, setExtendedProposal] = useState<ProposalData>(
(data ?? state)?.proposal as ProposalData,
);
const vote = (data ?? state)?.vote;

const [isValidating, setIsValidating] = useState(false);
Expand All @@ -60,12 +62,22 @@ export const DashboardGovernanceActionDetails = () => {
const validate = async () => {
setIsValidating(true);

const { status } = await validateMetadata({
const { status, metadata } = await validateMetadata({
standard: MetadataStandard.CIP108,
url: proposal?.url ?? "",
hash: proposal?.metadataHash ?? "",
url: extendedProposal?.url ?? "",
hash: extendedProposal?.metadataHash ?? "",
});

if (metadata) {
setExtendedProposal((prevProposal) => ({
...(prevProposal || {}),
...(metadata as Pick<
ProposalData,
"title" | "abstract" | "motivation" | "rationale"
>),
}));
}

metadataStatus.current = status;
setIsValidating(false);
};
Expand Down Expand Up @@ -95,7 +107,7 @@ export const DashboardGovernanceActionDetails = () => {
<Breadcrumbs
elementOne={t("govActions.title")}
elementOnePath={PATHS.dashboardGovernanceActions}
elementTwo={proposal?.title ?? ""}
elementTwo={extendedProposal?.title ?? ""}
isDataMissing={metadataStatus?.current ?? null}
/>
<Link
Expand Down Expand Up @@ -141,9 +153,9 @@ export const DashboardGovernanceActionDetails = () => {
>
<CircularProgress />
</Box>
) : proposal ? (
) : extendedProposal ? (
<GovernanceActionDetailsCard
proposal={proposal}
proposal={extendedProposal}
vote={vote}
isVoter={
voter?.isRegisteredAsDRep || voter?.isRegisteredAsSoleVoter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,36 +17,47 @@ type ActionTypeProps = Omit<
onClick?: () => void;
inProgress?: boolean;
};
export const ValidatedGovernanceActionCard = ({
url,
metadataHash,
...props
}: ActionTypeProps) => {
export const ValidatedGovernanceActionCard = (props: ActionTypeProps) => {
const [isValidating, setIsValidating] = useState(false);
const metadataStatus = useRef<MetadataValidationStatus | undefined>();
const { validateMetadata } = useValidateMutation();
const [extendedProposal, setExtendedProposal] = useState<ProposalData>(
props as ProposalData,
);

useEffect(() => {
const validate = async () => {
setIsValidating(true);

const { status } = await validateMetadata({
const { status, metadata } = await validateMetadata({
standard: MetadataStandard.CIP108,
url: url ?? "",
hash: metadataHash ?? "",
url: props?.url ?? "",
hash: props?.metadataHash ?? "",
});

metadataStatus.current = status;

if (metadata) {
setExtendedProposal(
(prevProposal) =>
({
...(prevProposal || {}),
...(metadata as Pick<
ProposalData,
"title" | "abstract" | "motivation" | "rationale"
>),
} as ProposalData),
);
}

setIsValidating(false);
};
validate();
}, []);
}, [props?.url, props?.metadataHash]);

return (
<GovernanceActionCard
{...props}
url={url}
metadataHash={metadataHash}
{...extendedProposal}
isValidating={isValidating}
metadataStatus={metadataStatus.current}
/>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useState, useRef, useEffect } from "react";

import { useValidateMutation } from "@/hooks/mutations";
import { MetadataStandard, VotedProposal } from "@/models";
import { MetadataStandard, ProposalData, VotedProposal } from "@/models";
import { GovernanceVotedOnCard } from "../molecules";

type Props = {
Expand All @@ -15,26 +15,41 @@ export const ValidatedGovernanceVotedOnCard = ({
const [isValidating, setIsValidating] = useState(false);
const metadataStatus = useRef<MetadataValidationStatus | undefined>();
const { validateMetadata } = useValidateMutation();
const [extendedVotedProposal, setExtendedVotedProposal] =
useState<VotedProposal>(votedProposal);

useEffect(() => {
const validate = async () => {
setIsValidating(true);

const { status } = await validateMetadata({
const { status, metadata } = await validateMetadata({
standard: MetadataStandard.CIP108,
url: votedProposal.proposal.url,
hash: votedProposal.proposal.metadataHash,
});

metadataStatus.current = status;

if (metadata) {
setExtendedVotedProposal((prevProposal) => ({
...(prevProposal || {}),
proposal: {
...(prevProposal.proposal || {}),
...(metadata as Pick<
ProposalData,
"title" | "abstract" | "motivation" | "rationale"
>),
},
}));
}
setIsValidating(false);
};
validate();
}, []);

return (
<GovernanceVotedOnCard
votedProposal={votedProposal}
votedProposal={extendedVotedProposal}
inProgress={inProgress}
isValidating={isValidating}
metadataStatus={metadataStatus.current}
Expand Down
31 changes: 21 additions & 10 deletions govtool/frontend/src/pages/GovernanceActionDetails.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useEffect, useRef } from "react";
import { useEffect, useRef, useState } from "react";
import {
useNavigate,
useLocation,
Expand Down Expand Up @@ -51,23 +51,34 @@ export const GovernanceActionDetails = () => {
fullProposalId ?? "",
!state?.proposal,
);
const proposal = (data ?? state)?.proposal;

const [extendedProposal, setExtendedProposal] = useState<ProposalData>(
(data ?? state)?.proposal as ProposalData,
);
const metadataStatus = useRef<MetadataValidationStatus | undefined>();
const { validateMetadata } = useValidateMutation();

useEffect(() => {
const validate = async () => {
const { status } = await validateMetadata({
const { status, metadata } = await validateMetadata({
standard: MetadataStandard.CIP108,
url: proposal?.url ?? "",
hash: proposal?.metadataHash ?? "",
url: extendedProposal?.url ?? "",
hash: extendedProposal?.metadataHash ?? "",
});

metadataStatus.current = status;

if (metadata) {
setExtendedProposal((prevProposal) => ({
...(prevProposal || {}),
...(metadata as Pick<
ProposalData,
"title" | "abstract" | "motivation" | "rationale"
>),
}));
}
};
validate();
}, [proposal?.url, proposal?.metadataHash]);
}, [extendedProposal?.url, extendedProposal?.metadataHash]);

useEffect(() => {
const isProposalNotFound =
Expand Down Expand Up @@ -121,7 +132,7 @@ export const GovernanceActionDetails = () => {
<Breadcrumbs
elementOne={t("govActions.title")}
elementOnePath={PATHS.governanceActions}
elementTwo={proposal?.title ?? ""}
elementTwo={extendedProposal?.title ?? ""}
isDataMissing={metadataStatus?.current ?? null}
/>
<Link
Expand Down Expand Up @@ -158,11 +169,11 @@ export const GovernanceActionDetails = () => {
>
<CircularProgress />
</Box>
) : proposal ? (
) : extendedProposal ? (
<Box data-testid="governance-action-details">
<GovernanceActionDetailsCard
isDataMissing={metadataStatus.current}
proposal={proposal}
proposal={extendedProposal}
/>
</Box>
) : (
Expand Down
15 changes: 8 additions & 7 deletions govtool/metadata-validation/src/app.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import * as jsonld from 'jsonld';
import { ValidateMetadataDTO } from '@dto';
import { LoggerMessage, MetadataValidationStatus } from '@enums';
import { validateMetadataStandard, parseMetadata, getStandard } from '@utils';
import { MetadataStandard, ValidateMetadataResult } from '@types';
import { /* MetadataStandard, */ ValidateMetadataResult } from '@types';

@Injectable()
export class AppService {
Expand Down Expand Up @@ -57,12 +57,13 @@ export class AppService {
throw MetadataValidationStatus.INCORRECT_FORMAT;
}

if (
standard === MetadataStandard.CIP108 &&
!Array.isArray(parsedData.authors)
) {
throw MetadataValidationStatus.INCORRECT_FORMAT;
}
// TODO: Uncomment this when gov action: 7f320409d9998712ff3a3cdf0c9439e1543f236a3d746766f78f1fdbe1e06bf8#0 expires
// if (
// standard === MetadataStandard.CIP108 &&
// !Array.isArray(parsedData.authors)
// ) {
// throw MetadataValidationStatus.INCORRECT_FORMAT;
// }

if (!parsedData?.body) {
throw MetadataValidationStatus.INCORRECT_FORMAT;
Expand Down