@@ -13,29 +13,24 @@ export class MediaCollection {
13
13
}
14
14
15
15
search ( criteria ?: SearchCriteria ) : ReadonlySet < MediaItem > {
16
- const items = [ ...this . items . values ( ) ] ;
17
- if ( ! criteria ) {
18
- return new Set ( items ) ;
16
+ if ( criteria ?. title ) {
17
+ return this . searchByTitle ( criteria . title ) ;
19
18
}
20
- const title = criteria . title ;
21
- if ( title ) {
22
- return this . searchByTitle ( title ) ;
23
- }
24
- if ( criteria . releaseYear ) {
19
+ if ( criteria ?. releaseYear ) {
25
20
return this . searchByReleaseYear ( criteria . releaseYear ) ;
26
21
}
27
- if ( criteria . type ) {
22
+ if ( criteria ? .type ) {
28
23
return this . searchByType ( criteria . type ) ;
29
24
}
30
- if ( criteria . creditName ) {
25
+ if ( criteria ? .creditName ) {
31
26
return this . searchByCreditName ( criteria . creditName ) ;
32
27
}
33
- return new Set ( items ) ;
28
+ return new Set ( this . getItems ( ) ) ;
34
29
}
35
30
36
31
searchByTitle ( title : string ) : ReadonlySet < MediaItem > {
37
32
return new Set (
38
- [ ... this . items . values ( ) ] . filter ( ( item ) =>
33
+ this . getItems ( ) . filter ( ( item ) =>
39
34
item
40
35
. getTitle ( )
41
36
. toLowerCase ( )
@@ -46,21 +41,17 @@ export class MediaCollection {
46
41
47
42
searchByReleaseYear ( releaseYear : number ) : ReadonlySet < MediaItem > {
48
43
return new Set (
49
- [ ...this . items . values ( ) ] . filter (
50
- ( item ) => item . getReleaseYear ( ) === releaseYear ,
51
- ) ,
44
+ this . getItems ( ) . filter ( ( item ) => item . getReleaseYear ( ) === releaseYear ) ,
52
45
) ;
53
46
}
54
47
55
48
searchByType ( type : string ) : ReadonlySet < MediaItem > {
56
- return new Set (
57
- [ ...this . items . values ( ) ] . filter ( ( item ) => item . getType ( ) === type ) ,
58
- ) ;
49
+ return new Set ( this . getItems ( ) . filter ( ( item ) => item . getType ( ) === type ) ) ;
59
50
}
60
51
61
52
searchByCreditName ( name : string ) : ReadonlySet < MediaItem > {
62
53
return new Set (
63
- [ ... this . items . values ( ) ] . filter ( ( item ) =>
54
+ this . getItems ( ) . filter ( ( item ) =>
64
55
item . getCredits ( ) . some ( ( credit ) =>
65
56
credit
66
57
. getName ( )
@@ -71,6 +62,10 @@ export class MediaCollection {
71
62
) ;
72
63
}
73
64
65
+ private getItems ( ) : readonly MediaItem [ ] {
66
+ return [ ...this . items . values ( ) ] ;
67
+ }
68
+
74
69
getInfo ( ) {
75
70
return {
76
71
getItems : ( ) => [ ...this . items ] as readonly [ string , MediaItem ] [ ] ,
0 commit comments