@@ -8,18 +8,18 @@ import { Button } from "@kleros/ui-components-library";
88
99import DownArrow from "svgs/icons/arrow-down.svg" ;
1010
11- import { spamEvidencesIds } from "consts/index " ;
11+ import { useSpamEvidence } from "hooks/useSpamEvidence " ;
1212
1313import { useDisputeDetailsQuery } from "queries/useDisputeDetailsQuery" ;
1414import { useEvidences } from "queries/useEvidences" ;
1515
1616import { landscapeStyle } from "styles/landscapeStyle" ;
1717
18+ import { Divider } from "components/Divider" ;
1819import EvidenceCard from "components/EvidenceCard" ;
1920import { SkeletonEvidenceCard } from "components/StyledSkeleton" ;
2021
2122import EvidenceSearch from "./EvidenceSearch" ;
22- import { Divider } from "components/Divider" ;
2323
2424const Container = styled . div `
2525 width: 100%;
@@ -85,6 +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 ( disputeData ?. dispute ?. externalDisputeId ?. toString ( ) ) ;
8889
8990 const { data } = useEvidences ( disputeData ?. dispute ?. externalDisputeId ?. toString ( ) , debouncedSearch ) ;
9091
@@ -99,57 +100,66 @@ const Evidence: React.FC = () => {
99100 latestEvidence . scrollIntoView ( { behavior : "smooth" } ) ;
100101 } , [ ref ] ) ;
101102
103+ const isSpam = useCallback (
104+ ( evidenceId : string ) => {
105+ return Boolean ( spamEvidences ?. courtv2EvidenceSpamsByGroupId . evidenceIds ?. includes ( evidenceId ) ) ;
106+ } ,
107+ [ spamEvidences ]
108+ ) ;
109+
102110 const evidences = useMemo ( ( ) => {
103111 if ( ! data ?. evidences ) return ;
104112 const spamEvidences = data . evidences . filter ( ( evidence ) => isSpam ( evidence . id ) ) ;
105113 const realEvidences = data . evidences . filter ( ( evidence ) => ! isSpam ( evidence . id ) ) ;
106114 return { realEvidences, spamEvidences } ;
107- } , [ data ] ) ;
115+ } , [ data , isSpam ] ) ;
108116
109117 return (
110118 < Container ref = { ref } >
111119 < EvidenceSearch { ...{ search, setSearch, evidenceGroup : disputeData ?. dispute ?. externalDisputeId } } />
112120 < ScrollButton small Icon = { DownArrow } text = "Scroll to latest" onClick = { scrollToLatest } />
113121 { evidences ?. realEvidences ? (
114- evidences ?. realEvidences . map (
115- ( { evidence, sender, timestamp, transactionHash, name, description, fileURI, evidenceIndex } ) => (
116- < EvidenceCard
117- key = { timestamp }
118- index = { parseInt ( evidenceIndex ) }
119- sender = { sender ?. id }
120- { ...{ evidence, timestamp, transactionHash, name, description, fileURI } }
121- />
122- )
123- )
124- ) : (
125- < SkeletonEvidenceCard />
126- ) }
127- { evidences ?. spamEvidences . length !== 0 ? (
128122 < >
129- < Divider />
130- { showSpam ? (
131- evidences ?. spamEvidences . map (
132- ( { evidence, sender, timestamp, transactionHash, name, description, fileURI, evidenceIndex } ) => (
133- < EvidenceCard
134- key = { timestamp }
135- index = { parseInt ( evidenceIndex ) }
136- sender = { sender ?. id }
137- { ...{ evidence, timestamp, transactionHash, name, description, fileURI } }
138- />
139- )
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+ />
140131 )
141- ) : (
142- < SpamLabel onClick = { ( ) => setShowSpam ( true ) } > Show likely spam</ SpamLabel >
143132 ) }
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 }
144155 </ >
145- ) : null }
156+ ) : (
157+ < SkeletonEvidenceCard />
158+ ) }
159+
146160 { data && data . evidences . length === 0 ? < StyledLabel > There is no evidence submitted yet</ StyledLabel > : null }
147161 </ Container >
148162 ) ;
149163} ;
150164
151- const isSpam = ( id : string ) => {
152- return spamEvidencesIds . includes ( id ) ;
153- } ;
154-
155165export default Evidence ;
0 commit comments