@@ -7,14 +7,14 @@ import { IconSearch } from './icons'
77export default function FSInfo ( ) {
88 const { files, scanJobs } = useLoaderData < typeof loader > ( )
99 const { state } = useNavigation ( )
10- const busy = state !== "idle"
11-
12- console . log ( scanJobs )
10+ const busy = state !== 'idle'
1311
1412 // NOTE: scanJobs can contain 1 failed AND 1 completed job
15- const lastJob = ( scanJobs as JobJson [ ] ) . sort ( ( a , b ) => b . timestamp - a . timestamp ) [ 0 ]
16- const isError = ! ! lastJob . failedReason
17- const isScanning = ! isError && ! lastJob . returnvalue
13+ const lastJob = ( scanJobs as JobJson [ ] ) . sort (
14+ ( a , b ) => b . timestamp - a . timestamp ,
15+ ) [ 0 ]
16+ const isError = ! ! lastJob ?. failedReason
17+ const isScanning = ! isError && ! lastJob ?. returnvalue
1818
1919 useJobsRevalidator ( scanJobs as Job [ ] )
2020
@@ -24,43 +24,51 @@ export default function FSInfo() {
2424 return (
2525 < div className = "mt-8" >
2626 < header className = "px-3 my-3 flex items-center justify-between" >
27- < h2 className = "flex-grow text-xl font-medium" >
28- Files downloaded
29- </ h2 >
27+ < h2 className = "flex-grow text-xl font-medium" > Files downloaded</ h2 >
3028 < Form method = "POST" >
3129 < button
32- type = ' submit'
33- name = ' _action'
34- value = ' scan'
30+ type = " submit"
31+ name = " _action"
32+ value = " scan"
3533 disabled = { busy || isScanning }
36- className = ' flex items-center gap-2 px-2 py-1 border rounded-md hover:bg-gray-50 transition-colors disabled:pointer-events-none disabled:opacity-50'
34+ className = " flex items-center gap-2 px-2 py-1 border rounded-md hover:bg-gray-50 transition-colors disabled:pointer-events-none disabled:opacity-50"
3735 >
3836 < IconSearch />
3937 < p > { isScanning ? 'Scanning...' : 'Scan Filesystem' } </ p >
4038 </ button >
4139 </ Form >
4240 </ header >
4341 { isError ? (
44- < p className = ' text-red-700 px-3 pb-4' > Error: { lastJob . failedReason } </ p >
42+ < p className = " text-red-700 px-3 pb-4" > Error: { lastJob . failedReason } </ p >
4543 ) : null }
4644 < details >
47- < summary className = "px-3 py-1" > { matchedFiles . length } file(s) identified</ summary >
45+ < summary className = "px-3 py-1" >
46+ { matchedFiles . length } file(s) identified
47+ </ summary >
4848 < ul className = "my-2" >
4949 { matchedFiles . map ( ( file ) => (
50- < li key = { file . name } className = "flex items-stretch gap-2 hover:bg-gray-100 transition-colors" >
51- < Link className = "block w-full p-3" to = { `/comic/${ file . parts ?. comic_id } ` } >
50+ < li
51+ key = { file . name }
52+ className = "flex items-stretch gap-2 hover:bg-gray-100 transition-colors"
53+ >
54+ < Link
55+ className = "block w-full p-3"
56+ to = { `/comic/${ file . parts ?. comic_id } ` }
57+ >
5258 { file . name }
5359 </ Link >
5460 </ li >
5561 ) ) }
5662 </ ul >
5763 </ details >
58- < details className = 'my-3' >
59- < summary className = 'px-3 py-1' > { unmatchedFiles . length } file(s) not identified</ summary >
60- < ul className = 'my-2' >
64+ < details className = "my-3" >
65+ < summary className = "px-3 py-1" >
66+ { unmatchedFiles . length } file(s) not identified
67+ </ summary >
68+ < ul className = "my-2" >
6169 { unmatchedFiles . map ( ( file ) => (
6270 < li key = { file . name } >
63- < p className = ' p-3' > { file . name } </ p >
71+ < p className = " p-3" > { file . name } </ p >
6472 </ li >
6573 ) ) }
6674 </ ul >
0 commit comments