Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
cbf51bf
tests: budget proposal costing and further information validation
kneerose Apr 16, 2025
9819783
Merge pull request #3482 from IntersectMBO/tests/proposal-budget-form…
kneerose Apr 16, 2025
a202dca
fix: proposal pillars ada format
kneerose Apr 17, 2025
8e888a2
test: mark slow tests for proposal discussion scenarios
kneerose Apr 17, 2025
d3f8715
fix: update outcome status handling for "Live" cases
kneerose Apr 17, 2025
0dc7148
chore: make ada format seperator support for lovelace
kneerose Apr 17, 2025
8a02793
chore: update the testIds and assertion of outcome voting power
kneerose Apr 17, 2025
7b0531f
feat: add support for DRep authentication in budget submission tests
kneerose Apr 17, 2025
c0abfc2
refactor: remove unused contact information fields and related form l…
kneerose Apr 17, 2025
0be05f0
refactor: remove isDrep parameter from authentication functions
kneerose Apr 17, 2025
a39a5d5
fix: remove vp that is refreshing every 20s from pdf
MSzalowski Apr 17, 2025
2a8fbcb
fix: correct total SPos no votes calculation in outcome details test
kneerose Apr 18, 2025
e9a8b07
chore: add test slow in before each
kneerose Apr 18, 2025
38094dd
chore: replace paragraph comments with word-based comments in budget …
kneerose Apr 18, 2025
20d3015
test: increase timeout for delegation card visibility check
kneerose Apr 18, 2025
2a0c30a
Merge pull request #3501 from IntersectMBO/main
MSzalowski Apr 18, 2025
1fc137a
feat: add dRepKey support to ShelleyWallet
kneerose Apr 18, 2025
595534b
chore: extract dRepId and register dRep using dRep keys
kneerose Apr 18, 2025
1e011e3
Merge pull request #3502 from IntersectMBO/staging
MSzalowski Apr 18, 2025
8a870c7
Merge pull request #3503 from IntersectMBO/test
MSzalowski Apr 18, 2025
60191ed
chore: update @cardanoapi/cardano-test-wallet to version 3.3.0
kneerose Apr 18, 2025
8719e66
test: mark proposal draft tests as slow
kneerose Apr 18, 2025
087fdb8
fix: missing or wrong validation status of Governance Action metadata
MSzalowski Apr 18, 2025
a3aac89
Merge pull request #3504 from IntersectMBO/fix/wrong-validation-status
MSzalowski Apr 18, 2025
2e864de
Merge pull request #3489 from IntersectMBO/fix/report-390-issue
mesudip Apr 18, 2025
8445537
Merge pull request #3497 from IntersectMBO/fix/re-render-on-vp-refresh
MSzalowski Apr 18, 2025
39fb11f
Merge pull request #3505 from IntersectMBO/develop
MSzalowski Apr 18, 2025
e83f11d
Merge pull request #3506 from IntersectMBO/test
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
57 changes: 30 additions & 27 deletions govtool/frontend/package-lock.json

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

24 changes: 13 additions & 11 deletions govtool/frontend/src/components/organisms/DRepCard.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useState, useRef, useEffect } from "react";
import { useState, useEffect } from "react";
import { useNavigate } from "react-router-dom";
import { Box, ButtonBase, Divider, Avatar, Skeleton } from "@mui/material";

Expand Down Expand Up @@ -70,31 +70,35 @@ export const DRepCard = ({

const base64Image = getBase64ImageDetails(image ?? "");
const [isValidating, setIsValidating] = useState(false);
const metadataStatus = useRef<MetadataValidationStatus | undefined>();
const [metadataStatus, setMetadataStatus] = useState<
MetadataValidationStatus | undefined
>();
const { validateMetadata } = useValidateMutation();

useEffect(() => {
if (!url) return;

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

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

metadataStatus.current = validationStatus;
setMetadataStatus(validationStatus);
setIsValidating(false);
};
validate();
}, []);
}, [url]);

return (
<Card
{...(isMe && {
variant: "primary",
})}
{...(!!metadataStatus.current && {
{...(!!metadataStatus && {
variant: "error",
})}
{...(isInProgress && {
Expand Down Expand Up @@ -175,13 +179,11 @@ export const DRepCard = ({
<Typography
sx={{
ellipsisStyles,
color: metadataStatus.current && "errorRed",
color: metadataStatus && "errorRed",
}}
>
{metadataStatus.current
? getMetadataDataMissingStatusTranslation(
metadataStatus.current,
)
{metadataStatus
? getMetadataDataMissingStatusTranslation(metadataStatus)
: ellipsizeText(givenName ?? "", 25)}
</Typography>
)}
Expand Down
24 changes: 14 additions & 10 deletions govtool/frontend/src/components/organisms/DRepDetailsCard.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { PropsWithChildren, useEffect, useRef, useState } from "react";
import { PropsWithChildren, useEffect, useState } from "react";
import { Box, ButtonBase, Link, Skeleton } from "@mui/material";

import { Button, ExternalModalButton, StatusPill, Typography } from "@atoms";
Expand Down Expand Up @@ -52,24 +52,28 @@ export const DRepDetailsCard = ({
} = dRepData;

const [isValidating, setIsValidating] = useState(false);
const metadataStatus = useRef<MetadataValidationStatus | undefined>();
const [metadataStatus, setMetadataStatus] = useState<
MetadataValidationStatus | undefined
>();
const { validateMetadata } = useValidateMutation();

useEffect(() => {
if (!url) return;

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

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

metadataStatus.current = metadataValidationStatus;
setMetadataStatus(metadataValidationStatus);
setIsValidating(false);
};
validate();
}, []);
}, [url]);

const groupedReferences = references?.reduce<Record<string, Reference[]>>(
(acc, reference) => {
Expand Down Expand Up @@ -117,18 +121,18 @@ export const DRepDetailsCard = ({
isMe={isMe}
isMyDrep={isMyDrep}
isValidating={isValidating}
metadataStatus={metadataStatus.current}
metadataStatus={metadataStatus}
/>
{/* ERROR MESSAGES */}
{metadataStatus.current && (
{metadataStatus && (
<DataMissingInfoBox
isDataMissing={metadataStatus.current}
isDataMissing={metadataStatus}
isDrep
sx={{ mb: 0 }}
isValidating={isValidating}
/>
)}
{metadataStatus.current && !!url && (
{metadataStatus && !!url && (
<ExternalModalButton
label={t("govActions.seeExternalData")}
sx={{ mb: 0, alignSelf: "flex-start" }}
Expand Down Expand Up @@ -230,7 +234,7 @@ export const DRepDetailsCard = ({
{/* BUTTONS END */}

{/* CIP-119 DATA */}
{!metadataStatus.current && (
{!metadataStatus && (
<>
<DRepDetailsInfoItem
label={t("forms.dRepData.objectives")}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useCallback, useEffect, useRef } from "react";
import { useCallback, useEffect, useState } from "react";
import { useNavigate } from "react-router-dom";
import { Trans } from "react-i18next";

Expand Down Expand Up @@ -44,21 +44,25 @@ export const DelegateDashboardCard = ({
delegateTx?.resourceId ?? currentDelegation?.dRepHash,
);

const metadataStatus = useRef<MetadataValidationStatus | undefined>();
const [metadataStatus, setMetadataStatus] = useState<
MetadataValidationStatus | undefined
>();
const { validateMetadata } = useValidateMutation();

useEffect(() => {
if (!myDRepDelegationData?.url) return;

const validate = async () => {
const { status } = await validateMetadata({
standard: MetadataStandard.CIP119,
url: myDRepDelegationData?.url ?? "",
url: myDRepDelegationData.url!,
hash: myDRepDelegationData?.metadataHash ?? "",
});

metadataStatus.current = status;
setMetadataStatus(status);
};
validate();
}, []);
}, [myDRepDelegationData?.url]);

const learnMoreButton = {
children: t("learnMore"),
Expand Down Expand Up @@ -170,8 +174,8 @@ export const DelegateDashboardCard = ({
drepName={
isLoading
? "Loading..."
: metadataStatus.current
? getMetadataDataMissingStatusTranslation(metadataStatus.current)
: metadataStatus
? getMetadataDataMissingStatusTranslation(metadataStatus)
: myDRepDelegationData?.givenName ?? ""
}
dRepId={displayedDelegationId}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useEffect, useRef, useState } from "react";
import { useEffect, useState } from "react";
import {
useNavigate,
useLocation,
Expand Down Expand Up @@ -49,22 +49,34 @@ export const DashboardGovernanceActionDetails = () => {
fullProposalId ?? "",
!state?.proposal || !state?.vote,
);
// TODO: Refactor this mess with proposals and metadata validation
// once authors are existing in all CIP-108 metadata
const [extendedProposal, setExtendedProposal] = useState<ProposalData>(
(data ?? state)?.proposal as ProposalData,
);

useEffect(() => {
if (data?.proposal) {
setExtendedProposal(data.proposal);
}
}, [data?.proposal]);
const vote = (data ?? state)?.vote;

const [isValidating, setIsValidating] = useState(false);
const metadataStatus = useRef<MetadataValidationStatus | undefined>();
const [isValidating, setIsValidating] = useState(true);
const [metadataStatus, setMetadataStatus] = useState<
MetadataValidationStatus | undefined
>();
const { validateMetadata } = useValidateMutation();

useEffect(() => {
if (!extendedProposal?.url) return;

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

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

Expand All @@ -78,11 +90,11 @@ export const DashboardGovernanceActionDetails = () => {
}));
}

metadataStatus.current = status;
setMetadataStatus(status);
setIsValidating(false);
};
validate();
}, []);
}, [extendedProposal?.url]);

useEffect(() => {
const isProposalNotFound =
Expand All @@ -108,7 +120,7 @@ export const DashboardGovernanceActionDetails = () => {
elementOne={t("govActions.title")}
elementOnePath={PATHS.dashboardGovernanceActions}
elementTwo={extendedProposal?.title ?? ""}
isDataMissing={metadataStatus?.current ?? null}
isDataMissing={metadataStatus ?? null}
/>
<Link
data-testid="back-to-list-link"
Expand Down Expand Up @@ -160,7 +172,7 @@ export const DashboardGovernanceActionDetails = () => {
isVoter={
voter?.isRegisteredAsDRep || voter?.isRegisteredAsSoleVoter
}
isDataMissing={metadataStatus?.current}
isDataMissing={metadataStatus}
isInProgress={
pendingTransaction.vote?.resourceId ===
fullProposalId?.replace("#", "")
Expand Down
Loading