Skip to content

Commit de7fdd2

Browse files
committed
refactor(web): update-spam-api-call
1 parent b33651a commit de7fdd2

File tree

2 files changed

+47
-55
lines changed

2 files changed

+47
-55
lines changed

web/src/hooks/useSpamEvidence.ts

+10-12
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
import { useQuery } from "@tanstack/react-query";
2-
import { request } from "graphql-request";
2+
import { gql, request } from "graphql-request";
33

44
import { isKlerosNeo, isKlerosUniversity, isTestnetDeployment } from "src/consts";
5-
import { graphql } from "src/graphql";
65
import { isUndefined } from "src/utils";
76

8-
const spamEvidenceQuery = graphql(`
9-
query SpamEvidences($deployment: CourtV2Deployment!) {
10-
courtv2EvidenceSpamsByDeployment(deployment: $deployment) {
11-
disputeEvidenceIndex
12-
dispute
7+
const spamEvidenceQuery = gql`
8+
query SpamEvidences($deployment: CourtV2Deployment!, $evidenceGroupId: String!) {
9+
courtv2EvidenceSpamsByGroupId(deployment: $deployment, evidenceGroupId: $evidenceGroupId) {
10+
evidenceIds
1311
}
1412
}
15-
`);
13+
`;
1614

1715
type SpamEvidences = {
18-
courtv2EvidenceSpamsByDeployment: { disputeEvidenceIndex: string; dispute: string }[];
16+
courtv2EvidenceSpamsByGroupId: { evidenceIds: string[] };
1917
};
2018

2119
const getAtlasDeployment = () => {
@@ -31,10 +29,10 @@ const getAtlasDeployment = () => {
3129
};
3230
const atlasUri = import.meta.env.REACT_APP_ATLAS_URI;
3331

34-
export const useSpamEvidence = () => {
35-
const isEnabled = !isUndefined(atlasUri);
32+
export const useSpamEvidence = (evidenceGroupId: string) => {
33+
const isEnabled = !isUndefined(atlasUri) && !isUndefined(evidenceGroupId);
3634

37-
const variables = { deployment: getAtlasDeployment() };
35+
const variables = { deployment: getAtlasDeployment(), evidenceGroupId };
3836
return useQuery<SpamEvidences>({
3937
queryKey: [`evidenceSpamQuery`],
4038
enabled: isEnabled,

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

+37-43
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ const Evidence: React.FC = () => {
8585
const [search, setSearch] = useState<string>();
8686
const [debouncedSearch, setDebouncedSearch] = useState<string>();
8787
const [showSpam, setShowSpam] = useState(false);
88-
const { data: spamEvidences } = useSpamEvidence();
88+
const { data: spamEvidences } = useSpamEvidence(disputeData?.dispute?.externalDisputeId?.toString());
8989

9090
const { data } = useEvidences(disputeData?.dispute?.externalDisputeId?.toString(), debouncedSearch);
9191

@@ -100,23 +100,11 @@ const Evidence: React.FC = () => {
100100
latestEvidence.scrollIntoView({ behavior: "smooth" });
101101
}, [ref]);
102102

103-
const flattenedSpamEvidences = useMemo(
104-
() =>
105-
spamEvidences?.courtv2EvidenceSpamsByDeployment.reduce<string[]>((acc, current) => {
106-
if (current.dispute === id) {
107-
acc.push(current.disputeEvidenceIndex);
108-
return acc;
109-
}
110-
return acc;
111-
}, []),
112-
[id, spamEvidences]
113-
);
114-
115103
const isSpam = useCallback(
116104
(evidenceId: string) => {
117-
return Boolean(flattenedSpamEvidences?.includes(evidenceId));
105+
return Boolean(spamEvidences?.courtv2EvidenceSpamsByGroupId.evidenceIds?.includes(evidenceId));
118106
},
119-
[flattenedSpamEvidences]
107+
[spamEvidences]
120108
);
121109

122110
const evidences = useMemo(() => {
@@ -131,38 +119,44 @@ const Evidence: React.FC = () => {
131119
<EvidenceSearch {...{ search, setSearch, evidenceGroup: disputeData?.dispute?.externalDisputeId }} />
132120
<ScrollButton small Icon={DownArrow} text="Scroll to latest" onClick={scrollToLatest} />
133121
{evidences?.realEvidences ? (
134-
evidences?.realEvidences.map(
135-
({ evidence, sender, timestamp, transactionHash, name, description, fileURI, evidenceIndex }) => (
136-
<EvidenceCard
137-
key={timestamp}
138-
index={parseInt(evidenceIndex)}
139-
sender={sender?.id}
140-
{...{ evidence, timestamp, transactionHash, name, description, fileURI }}
141-
/>
142-
)
143-
)
144-
) : (
145-
<SkeletonEvidenceCard />
146-
)}
147-
{evidences?.spamEvidences.length !== 0 ? (
148122
<>
149-
<Divider />
150-
{showSpam ? (
151-
evidences?.spamEvidences.map(
152-
({ evidence, sender, timestamp, transactionHash, name, description, fileURI, evidenceIndex }) => (
153-
<EvidenceCard
154-
key={timestamp}
155-
index={parseInt(evidenceIndex)}
156-
sender={sender?.id}
157-
{...{ evidence, timestamp, transactionHash, name, description, fileURI }}
158-
/>
159-
)
123+
{evidences?.realEvidences.map(
124+
({ evidence, sender, timestamp, transactionHash, name, description, fileURI, evidenceIndex }) => (
125+
<EvidenceCard
126+
key={timestamp}
127+
index={parseInt(evidenceIndex)}
128+
sender={sender?.id}
129+
{...{ evidence, timestamp, transactionHash, name, description, fileURI }}
130+
/>
160131
)
161-
) : (
162-
<SpamLabel onClick={() => setShowSpam(true)}>Show likely spam</SpamLabel>
163132
)}
133+
{spamEvidences && evidences?.spamEvidences.length !== 0 ? (
134+
<>
135+
<Divider />
136+
{showSpam ? (
137+
<>
138+
<SpamLabel onClick={() => setShowSpam(false)}>Hide spam</SpamLabel>
139+
{evidences?.spamEvidences.map(
140+
({ evidence, sender, timestamp, transactionHash, name, description, fileURI, evidenceIndex }) => (
141+
<EvidenceCard
142+
key={timestamp}
143+
index={parseInt(evidenceIndex)}
144+
sender={sender?.id}
145+
{...{ evidence, timestamp, transactionHash, name, description, fileURI }}
146+
/>
147+
)
148+
)}
149+
</>
150+
) : (
151+
<SpamLabel onClick={() => setShowSpam(true)}>Show likely spam</SpamLabel>
152+
)}
153+
</>
154+
) : null}
164155
</>
165-
) : null}
156+
) : (
157+
<SkeletonEvidenceCard />
158+
)}
159+
166160
{data && data.evidences.length === 0 ? <StyledLabel>There is no evidence submitted yet</StyledLabel> : null}
167161
</Container>
168162
);

0 commit comments

Comments
 (0)