@@ -3,23 +3,22 @@ import ReactTooltip from 'react-tooltip'
3
3
import { Link } from 'react-router-dom'
4
4
import ProjectRepository from '../repositories/ProjectRepository'
5
5
import styles from './../style/components/Project.module.css'
6
+ import { Project as ProjectType } from '../models/ProjectsResponse'
6
7
7
- import ProjectDetails from '../models/ProjectDetails'
8
8
import FavoriteStar from './FavoriteStar'
9
9
10
10
interface Props {
11
- projectName : string
11
+ project : ProjectType
12
12
onFavoriteChanged : ( ) => void
13
13
}
14
14
15
- export default function Project ( props : Props ) : JSX . Element {
16
- const [ versions , setVersions ] = useState < ProjectDetails [ ] > ( [ ] )
15
+ export default function Project ( props : Props ) : JSX . Element {
17
16
const [ logo , setLogo ] = useState < Blob | null > ( null )
18
17
19
18
// try to load image to prevent image flashing
20
19
useEffect ( ( ) => {
21
20
void ( async ( ) => {
22
- const logoURL = ProjectRepository . getProjectLogoURL ( props . projectName )
21
+ const logoURL = ProjectRepository . getProjectLogoURL ( props . project . name )
23
22
try {
24
23
const response = await fetch ( logoURL )
25
24
if ( response . status === 200 ) {
@@ -30,62 +29,48 @@ export default function Project (props: Props): JSX.Element {
30
29
setLogo ( null )
31
30
}
32
31
} ) ( )
33
- } , [ props . projectName ] )
34
-
35
- // reload versions on project name change
36
- useEffect ( ( ) => {
37
- void ( async ( ) => {
38
- try {
39
- const versionResponse = await ProjectRepository . getVersions (
40
- props . projectName
41
- )
42
- setVersions ( versionResponse )
43
- } catch ( e ) {
44
- setVersions ( [ ] )
45
- }
46
- } ) ( )
47
- } , [ props . projectName ] )
32
+ } , [ props . project ] )
48
33
49
34
return (
50
35
< div className = { styles [ 'project-card' ] } >
51
36
< ReactTooltip />
52
37
< div className = { styles [ 'project-card-header' ] } >
53
- < Link to = { `/${ props . projectName } /latest` } >
38
+ < Link to = { `/${ props . project . name } /latest` } >
54
39
{ logo == null
55
40
? (
56
41
< div
57
42
className = { styles [ 'project-card-title' ] }
58
- data-tip = { props . projectName }
43
+ data-tip = { props . project . name }
59
44
>
60
- { props . projectName }
45
+ { props . project . name }
61
46
</ div >
62
47
)
63
48
: (
64
49
< >
65
50
< img
66
51
className = { styles [ 'project-logo' ] }
67
52
src = { URL . createObjectURL ( logo ) }
68
- alt = { `${ props . projectName } project Logo` }
53
+ alt = { `${ props . project . name } project Logo` }
69
54
/>
70
55
71
56
< div
72
57
className = { styles [ 'project-card-title-with-logo' ] }
73
- data-tip = { props . projectName }
58
+ data-tip = { props . project . name }
74
59
>
75
- { props . projectName }
60
+ { props . project . name }
76
61
</ div >
77
62
</ >
78
63
) }
79
64
</ Link >
80
65
< FavoriteStar
81
- projectName = { props . projectName }
66
+ projectName = { props . project . name }
82
67
onFavoriteChanged = { props . onFavoriteChanged }
83
68
/>
84
69
</ div >
85
70
< div className = { styles . subhead } >
86
- { versions . length === 1
87
- ? `${ versions . length } version`
88
- : `${ versions . length } versions` }
71
+ { props . project . versions === 1
72
+ ? `${ props . project . versions } version`
73
+ : `${ props . project . versions } versions` }
89
74
</ div >
90
75
</ div >
91
76
)
0 commit comments