1
1
import ThunderstoreVersion from './ThunderstoreVersion' ;
2
+ import VersionNumber from './VersionNumber' ;
2
3
3
4
export default class ThunderstoreMod extends ThunderstoreVersion {
4
- private versions : ThunderstoreVersion [ ] = [ ] ;
5
5
private rating : number = 0 ;
6
6
private owner : string = '' ;
7
7
private packageUrl : string = '' ;
@@ -14,6 +14,7 @@ export default class ThunderstoreMod extends ThunderstoreVersion {
14
14
private categories : string [ ] = [ ] ;
15
15
private hasNsfwContent : boolean = false ;
16
16
private donationLink : string | undefined ;
17
+ private latestVersion : string = '' ;
17
18
18
19
public static parseFromThunderstoreData ( data : any ) : ThunderstoreMod {
19
20
const mod = new ThunderstoreMod ( ) ;
@@ -24,43 +25,37 @@ export default class ThunderstoreMod extends ThunderstoreVersion {
24
25
mod . setDateUpdated ( data . date_updated ) ;
25
26
mod . setDeprecatedStatus ( data . is_deprecated ) ;
26
27
mod . setPinnedStatus ( data . is_pinned ) ;
27
- const versions = [ ] ;
28
- for ( const version of data . versions ) {
29
- versions . push ( new ThunderstoreVersion ( ) . make ( version ) ) ;
30
- }
31
- mod . setVersions ( versions ) ;
32
- mod . setDownloadCount (
33
- mod . versions
34
- . map ( version => version . getDownloadCount ( ) )
35
- . reduce ( ( x , y ) => x + y )
36
- ) ;
37
28
mod . setRating ( data . rating_score ) ;
38
29
mod . setTotalDownloads (
39
- mod . getVersions ( )
40
- . map ( x => x . getDownloadCount ( ) )
41
- . reduce ( ( x , y ) => x + y )
30
+ data . versions . reduce (
31
+ ( x : number , y : { downloads : number } ) => x + y . downloads ,
32
+ 0
33
+ )
42
34
) ;
43
35
mod . setPackageUrl ( data . package_url ) ;
44
36
mod . setCategories ( data . categories ) ;
45
37
mod . setNsfwFlag ( data . has_nsfw_content ) ;
46
38
mod . setDonationLink ( data . donation_link ) ;
39
+ mod . setLatestVersion ( data . versions [ 0 ] . version_number ) ;
40
+ mod . setDescription ( data . versions [ 0 ] . description ) ;
41
+ mod . setIcon ( data . versions [ 0 ] . icon ) ;
47
42
return mod ;
48
43
}
49
44
50
- public getVersions ( ) : ThunderstoreVersion [ ] {
51
- return this . versions ;
45
+ public getLatestVersion ( ) : string {
46
+ return this . latestVersion ;
52
47
}
53
48
54
- public setVersions ( versions : ThunderstoreVersion [ ] ) {
55
- this . versions = versions ;
49
+ public setLatestVersion ( versionNumber : string ) {
50
+ this . latestVersion = versionNumber ;
56
51
}
57
52
58
- public getLatestVersion ( ) : ThunderstoreVersion {
59
- return this . getVersions ( ) . reduce ( reduceToNewestVersion ) ;
53
+ public getLatestVersionNumber ( ) : VersionNumber {
54
+ return new VersionNumber ( this . latestVersion ) ;
60
55
}
61
56
62
57
public getLatestDependencyString ( ) : string {
63
- return `${ this . getFullName ( ) } -${ this . getLatestVersion ( ) . toString ( ) } ` ;
58
+ return `${ this . getFullName ( ) } -${ this . getLatestVersion ( ) } ` ;
64
59
}
65
60
66
61
public getRating ( ) : number {
0 commit comments