Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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