@@ -16,7 +16,7 @@ function ProjectComparator() {
16
16
const params = useParams ( ) ;
17
17
const { platform, org, repo, prevCommitHash, currentCommitHash } = params ;
18
18
19
- const [ state , setState ] = useState ( new Set ( ) ) ;
19
+ const [ state , setState ] = useState ( [ ] ) ;
20
20
21
21
const prevCommitQuery = useQuery ( {
22
22
queryKey : [ "prevCommit" ] ,
@@ -48,52 +48,47 @@ function ProjectComparator() {
48
48
const previousData = prevCommitQuery ?. data ;
49
49
50
50
useEffect ( ( ) => {
51
- const areEqualDetails = ( ) =>
52
- previousData ?. checks &&
53
- previousData ?. score &&
54
- currentData ?. checks ?. forEach ( ( e1 : ScoreElement , index : number ) => {
55
- if (
56
- JSON . stringify ( e1 . details ) !==
57
- JSON . stringify ( previousData ?. checks [ index ] . details ) ||
58
- JSON . stringify ( e1 . reason ) !==
59
- JSON . stringify ( previousData ?. checks [ index ] . reason )
60
- ) {
61
- setState (
62
- ( previousState ) =>
63
- new Set ( [
64
- ...previousState ,
65
- {
66
- areEqual : false ,
67
- name : previousData . checks [ index ] . name ,
68
- details : e1 . details ,
69
- reason : e1 . reason ,
70
- score : e1 . score ,
71
- short : e1 . documentation . short ,
72
- url : e1 . documentation . url ,
73
- prevDetails : previousData . checks [ index ] . details ,
74
- prevReason : previousData . checks [ index ] . reason ,
75
- prevScore : previousData . score ,
76
- } ,
77
- ] )
78
- ) ;
79
- } else {
80
- setState (
81
- ( previousState ) =>
82
- new Set ( [
83
- ...previousState ,
84
- {
85
- areEqual : true ,
86
- name : e1 . name ,
87
- details : e1 . details ,
88
- reason : e1 . reason ,
89
- score : e1 . score ,
90
- short : e1 . documentation . short ,
91
- url : e1 . documentation . url ,
92
- } ,
93
- ] )
94
- ) ;
51
+ const areEqualDetails = ( ) => {
52
+ let consolidatedData ;
53
+
54
+ if ( ! previousData ?. checks || ! previousData ?. score ) {
55
+ return ;
56
+ }
57
+ consolidatedData = currentData ?. checks ?. map (
58
+ ( e1 : ScoreElement , index : number ) => {
59
+ if (
60
+ JSON . stringify ( e1 . details ) !==
61
+ JSON . stringify ( previousData ?. checks [ index ] . details ) ||
62
+ JSON . stringify ( e1 . reason ) !==
63
+ JSON . stringify ( previousData ?. checks [ index ] . reason )
64
+ ) {
65
+ return {
66
+ areEqual : false ,
67
+ name : previousData . checks [ index ] . name ,
68
+ details : e1 . details ,
69
+ reason : e1 . reason ,
70
+ score : e1 . score ,
71
+ short : e1 . documentation . short ,
72
+ url : e1 . documentation . url ,
73
+ prevDetails : previousData . checks [ index ] . details ,
74
+ prevReason : previousData . checks [ index ] . reason ,
75
+ prevScore : previousData . checks [ index ] . score ,
76
+ } ;
77
+ } else {
78
+ return {
79
+ areEqual : true ,
80
+ name : e1 . name ,
81
+ details : e1 . details ,
82
+ reason : e1 . reason ,
83
+ score : e1 . score ,
84
+ short : e1 . documentation . short ,
85
+ url : e1 . documentation . url ,
86
+ } ;
87
+ }
95
88
}
96
- } ) ;
89
+ ) ;
90
+ setState ( consolidatedData ) ;
91
+ } ;
97
92
areEqualDetails ( ) ;
98
93
} , [ currentData , previousData ] ) ;
99
94
@@ -142,44 +137,45 @@ function ProjectComparator() {
142
137
</ a >
143
138
</ p >
144
139
< hr />
145
- { [ ...state ] . map ( ( element : any ) => (
146
- < >
147
- < div key = { element . name } className = "card__wrapper" >
148
- < div className = "heading__wrapper" >
149
- < div className = "info-badge__wrapper" >
150
- < h3 > { element . name } </ h3 >
151
- { scoreChecker ( element . score , element . prevScore ) }
140
+ { Array . isArray ( state ) &&
141
+ state . map ( ( element : any ) => (
142
+ < >
143
+ < div key = { element . name } className = "card__wrapper" >
144
+ < div data-testid = { element . name } className = "heading__wrapper" >
145
+ < div className = "info-badge__wrapper" >
146
+ < h3 > { element . name } </ h3 >
147
+ { scoreChecker ( element . score , element . prevScore ) }
148
+ </ div >
149
+ < span > { element . score } /10</ span >
152
150
</ div >
153
- < span > { element . score } /10</ span >
151
+ < p >
152
+ Description: { element . short . toLocaleLowerCase ( ) } { " " }
153
+ < a href = { `${ element . url } ` } target = "_blank" rel = "noreferrer" >
154
+ See documentation
155
+ </ a >
156
+ </ p >
157
+ < p >
158
+ Reasoning: < span > { element ?. reason . toLocaleLowerCase ( ) } </ span >
159
+ </ p >
160
+ { Array . isArray ( element . details ) && (
161
+ < Collapsible details = { element . details } />
162
+ ) }
163
+ { ( element . prevDetails || element . prevReason ) && (
164
+ < >
165
+ < h4 > Additional details / variations</ h4 >
166
+ < p >
167
+ Previous revision reasoning:{ " " }
168
+ < span > { element . prevReason . toLocaleLowerCase ( ) } </ span >
169
+ </ p >
170
+ { element . prevDetails && (
171
+ < Collapsible details = { element . prevDetails } />
172
+ ) }
173
+ </ >
174
+ ) }
154
175
</ div >
155
- < p >
156
- Description: { element . short . toLocaleLowerCase ( ) } { " " }
157
- < a href = { `${ element . url } ` } target = "_blank" rel = "noreferrer" >
158
- See documentation
159
- </ a >
160
- </ p >
161
- < p >
162
- Reasoning: < span > { element ?. reason . toLocaleLowerCase ( ) } </ span >
163
- </ p >
164
- { Array . isArray ( element . details ) && (
165
- < Collapsible details = { element . details } />
166
- ) }
167
- { ( element . prevDetails || element . prevReason ) && (
168
- < >
169
- < h4 > Additional details / variations</ h4 >
170
- < p >
171
- Previous revision reasoning:{ " " }
172
- < span > { element . prevReason . toLocaleLowerCase ( ) } </ span >
173
- </ p >
174
- { element . prevDetails && (
175
- < Collapsible details = { element . prevDetails } />
176
- ) }
177
- </ >
178
- ) }
179
- </ div >
180
- < hr />
181
- </ >
182
- ) ) }
176
+ < hr />
177
+ </ >
178
+ ) ) }
183
179
</ >
184
180
) ;
185
181
}
0 commit comments