11import { Button , ErrorMessage , Table , TextInput } from 'nhsuk-react-components' ;
2- import { JSX , useEffect , useRef , useState } from 'react' ;
2+ import { useEffect , useRef , useState } from 'react' ;
33import { Link } from 'react-router' ;
44import useBaseAPIUrl from '../../../../helpers/hooks/useBaseAPIUrl' ;
55import useTitle from '../../../../helpers/hooks/useTitle' ;
@@ -16,7 +16,7 @@ import { Pagination } from '../../../generic/paginationV2/Pagination';
1616import SpinnerButton from '../../../generic/spinnerButton/SpinnerButton' ;
1717import SpinnerV2 from '../../../generic/spinnerV2/SpinnerV2' ;
1818
19- export const ReviewsPage = ( ) : JSX . Element => {
19+ export const ReviewsPage = ( ) : React . JSX . Element => {
2020 useTitle ( { pageTitle : 'Admin - Reviews' } ) ;
2121 const baseUrl = useBaseAPIUrl ( ) ;
2222 const inputRef = useRef < HTMLInputElement | null > ( null ) ;
@@ -59,7 +59,7 @@ export const ReviewsPage = (): JSX.Element => {
5959 return newTokens ;
6060 } ) ;
6161 }
62- } catch ( error ) {
62+ } catch {
6363 setFailedLoading ( true ) ;
6464 setCurrentPage ( 1 ) ;
6565 setPageTokens ( [ '' ] ) ;
@@ -174,44 +174,11 @@ export const ReviewsPage = (): JSX.Element => {
174174 </ Table . Row >
175175 </ Table . Head >
176176 < Table . Body >
177- { failedLoading ? (
178- < Table . Row >
179- < Table . Cell colSpan = { 6 } >
180- < ErrorMessage > Failed to load reviews</ ErrorMessage >
181- </ Table . Cell >
182- </ Table . Row >
183- ) : null }
184- { reviews . length > 0 && ( ! isLoading || failedLoading ) ? (
185- reviews . map (
186- ( review ) : JSX . Element => (
187- < Table . Row key = { review . id } >
188- < Table . Cell > { review . nhsNumber } </ Table . Cell >
189- < Table . Cell > { review . recordType } </ Table . Cell >
190- < Table . Cell > { review . uploader } </ Table . Cell >
191- < Table . Cell > { review . dateUploaded } </ Table . Cell >
192- < Table . Cell > { review . reviewReason } </ Table . Cell >
193- < Table . Cell className = "nowrap" >
194- < Link
195- to = { review . id }
196- data-testid = { `view-record-link-${ review . id } ` }
197- >
198- View
199- </ Link >
200- </ Table . Cell >
201- </ Table . Row >
202- ) ,
203- )
204- ) : failedLoading ? null : (
205- < Table . Row >
206- < Table . Cell colSpan = { 6 } >
207- { isLoading ? (
208- < SpinnerV2 status = "Loading..." />
209- ) : (
210- < > No documents to review</ >
211- ) }
212- </ Table . Cell >
213- </ Table . Row >
214- ) }
177+ < TableRows
178+ reviews = { reviews }
179+ isLoading = { isLoading }
180+ failedLoading = { failedLoading }
181+ />
215182 </ Table . Body >
216183 </ Table >
217184 < Pagination >
@@ -255,3 +222,68 @@ export const ReviewsPage = (): JSX.Element => {
255222 </ >
256223 ) ;
257224} ;
225+
226+ type TableRowsProps = {
227+ reviews : ReviewListItem [ ] ;
228+ isLoading : boolean ;
229+ failedLoading : boolean ;
230+ } ;
231+ const TableRows = ( {
232+ reviews,
233+ isLoading,
234+ failedLoading
235+ } : TableRowsProps ) : React . JSX . Element => {
236+ if ( isLoading ) {
237+ return (
238+ < Table . Row >
239+ < Table . Cell colSpan = { 6 } >
240+ < SpinnerV2 status = "Loading..." />
241+ </ Table . Cell >
242+ </ Table . Row >
243+ ) ;
244+ }
245+
246+ if ( reviews . length > 0 ) {
247+ return (
248+ < >
249+ { reviews . map (
250+ ( review ) => (
251+ < Table . Row key = { review . id } >
252+ < Table . Cell > { review . nhsNumber } </ Table . Cell >
253+ < Table . Cell > { review . recordType } </ Table . Cell >
254+ < Table . Cell > { review . uploader } </ Table . Cell >
255+ < Table . Cell > { review . dateUploaded } </ Table . Cell >
256+ < Table . Cell > { review . reviewReason } </ Table . Cell >
257+ < Table . Cell className = "nowrap" >
258+ < Link
259+ to = { review . id }
260+ data-testid = { `view-record-link-${ review . id } ` }
261+ >
262+ View
263+ </ Link >
264+ </ Table . Cell >
265+ </ Table . Row >
266+ )
267+ ) }
268+ </ >
269+ ) ;
270+ }
271+
272+ if ( failedLoading ) {
273+ return (
274+ < Table . Row >
275+ < Table . Cell colSpan = { 6 } >
276+ < ErrorMessage > Failed to load reviews</ ErrorMessage >
277+ </ Table . Cell >
278+ </ Table . Row >
279+ ) ;
280+ }
281+
282+ return (
283+ < Table . Row >
284+ < Table . Cell colSpan = { 6 } >
285+ No documents to review
286+ </ Table . Cell >
287+ </ Table . Row >
288+ ) ;
289+ } ;
0 commit comments