Skip to content

Commit 05ebe69

Browse files
committed
feat(web): naive-arbitrable-side-evidence-display
1 parent f862532 commit 05ebe69

File tree

2 files changed

+42
-13
lines changed

2 files changed

+42
-13
lines changed

web/src/components/EvidenceCard.tsx

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { formatDate } from "utils/date";
1111
import { getIpfsUrl } from "utils/getIpfsUrl";
1212

1313
import { type Evidence } from "src/graphql/graphql";
14-
import { getTxnExplorerLink } from "src/utils";
14+
import { getTxnExplorerLink, isUndefined } from "src/utils";
1515

1616
import { hoverShortTransitionTiming } from "styles/commonStyles";
1717
import { landscapeStyle } from "styles/landscapeStyle";
@@ -186,9 +186,9 @@ const AttachedFileText: React.FC = () => (
186186
);
187187

188188
interface IEvidenceCard extends Pick<Evidence, "evidence" | "timestamp" | "name" | "description" | "fileURI"> {
189-
sender: string;
190-
index: number;
191-
transactionHash: string;
189+
sender?: string;
190+
index?: number;
191+
transactionHash?: string;
192192
}
193193

194194
const EvidenceCard: React.FC<IEvidenceCard> = ({
@@ -212,7 +212,7 @@ const EvidenceCard: React.FC<IEvidenceCard> = ({
212212
<StyledCard>
213213
<TopContent dir="auto">
214214
<IndexAndName>
215-
<Index>#{index}. </Index>
215+
{isUndefined(index) ? null : <Index>#{index}. </Index>}
216216
<h3>{name}</h3>
217217
</IndexAndName>
218218
{name && description ? (
@@ -227,12 +227,16 @@ const EvidenceCard: React.FC<IEvidenceCard> = ({
227227
</TopContent>
228228
<BottomShade>
229229
<BottomLeftContent>
230-
<StyledJurorInternalLink to={profileLink}>
231-
<JurorTitle address={sender} />
232-
</StyledJurorInternalLink>
233-
<StyledExternalLink to={transactionExplorerLink} rel="noopener noreferrer" target="_blank">
234-
<label>{formatDate(Number(timestamp), true)}</label>
235-
</StyledExternalLink>
230+
{isUndefined(sender) ? null : (
231+
<StyledJurorInternalLink to={profileLink}>
232+
<JurorTitle address={sender} />
233+
</StyledJurorInternalLink>
234+
)}
235+
{isUndefined(timestamp) || isUndefined(transactionExplorerLink) ? null : (
236+
<StyledExternalLink to={transactionExplorerLink} rel="noopener noreferrer" target="_blank">
237+
<label>{formatDate(Number(timestamp), true)}</label>
238+
</StyledExternalLink>
239+
)}
236240
</BottomLeftContent>
237241
{fileURI && fileURI !== "-" ? (
238242
<FileLinkContainer>

web/src/pages/Cases/CaseDetails/Evidence/index.tsx

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import styled, { css } from "styled-components";
33

44
import { useParams } from "react-router-dom";
55
import { useDebounce } from "react-use";
6+
import { Address } from "viem";
67

78
import { Button } from "@kleros/ui-components-library";
89

@@ -11,6 +12,9 @@ import DownArrow from "svgs/icons/arrow-down.svg";
1112
import { useSpamEvidence } from "hooks/useSpamEvidence";
1213

1314
import { useEvidences } from "queries/useEvidences";
15+
import { usePopulatedDisputeData } from "queries/usePopulatedDisputeData";
16+
17+
import { isUndefined } from "src/utils";
1418

1519
import { landscapeStyle } from "styles/landscapeStyle";
1620

@@ -41,6 +45,10 @@ const StyledLabel = styled.label`
4145
font-size: 16px;
4246
`;
4347

48+
const ArbitrableEvidenceHeading = styled.h2`
49+
font-weight: 600;
50+
font-size: 24px;
51+
`;
4452
const ScrollButton = styled(Button)`
4553
align-self: flex-end;
4654
background-color: transparent;
@@ -77,14 +85,17 @@ const SpamLabel = styled.label`
7785
cursor: pointer;
7886
`;
7987

80-
const Evidence: React.FC = () => {
88+
interface IEvidence {
89+
arbitrable?: Address;
90+
}
91+
const Evidence: React.FC<IEvidence> = ({ arbitrable }) => {
8192
const { id } = useParams();
8293
const ref = useRef<HTMLDivElement>(null);
8394
const [search, setSearch] = useState<string>();
8495
const [debouncedSearch, setDebouncedSearch] = useState<string>();
8596
const [showSpam, setShowSpam] = useState(false);
8697
const { data: spamEvidences } = useSpamEvidence(id!);
87-
98+
const { data: disputeData } = usePopulatedDisputeData(id, arbitrable);
8899
const { data } = useEvidences(id!, debouncedSearch);
89100

90101
useDebounce(() => setDebouncedSearch(search), 500, [search]);
@@ -105,6 +116,7 @@ const Evidence: React.FC = () => {
105116
[spamEvidences]
106117
);
107118

119+
const arbitrableEvidences = disputeData?.extraEvidences;
108120
const evidences = useMemo(() => {
109121
if (!data?.evidences) return;
110122
const spamEvidences = data.evidences.filter((evidence) => isSpam(evidence.id));
@@ -116,6 +128,19 @@ const Evidence: React.FC = () => {
116128
<Container ref={ref}>
117129
<EvidenceSearch {...{ search, setSearch }} />
118130
<ScrollButton small Icon={DownArrow} text="Scroll to latest" onClick={scrollToLatest} />
131+
{!isUndefined(arbitrableEvidences) && arbitrableEvidences.length > 0 ? (
132+
<>
133+
<ArbitrableEvidenceHeading>Evidence provided by arbitrable</ArbitrableEvidenceHeading>
134+
{arbitrableEvidences.map(({ name, description, fileURI, sender, timestamp, transactionHash }, index) => (
135+
<EvidenceCard
136+
key={index}
137+
evidence=""
138+
{...{ sender, timestamp, transactionHash, name, description, fileURI }}
139+
/>
140+
))}
141+
<Divider />
142+
</>
143+
) : null}
119144
{evidences?.realEvidences ? (
120145
<>
121146
{evidences?.realEvidences.map(

0 commit comments

Comments
 (0)