@@ -13,29 +13,24 @@ export class MediaCollection {
1313 }
1414
1515 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 ) ;
1918 }
20- const title = criteria . title ;
21- if ( title ) {
22- return this . searchByTitle ( title ) ;
23- }
24- if ( criteria . releaseYear ) {
19+ if ( criteria ?. releaseYear ) {
2520 return this . searchByReleaseYear ( criteria . releaseYear ) ;
2621 }
27- if ( criteria . type ) {
22+ if ( criteria ? .type ) {
2823 return this . searchByType ( criteria . type ) ;
2924 }
30- if ( criteria . creditName ) {
25+ if ( criteria ? .creditName ) {
3126 return this . searchByCreditName ( criteria . creditName ) ;
3227 }
33- return new Set ( items ) ;
28+ return new Set ( this . getItems ( ) ) ;
3429 }
3530
3631 searchByTitle ( title : string ) : ReadonlySet < MediaItem > {
3732 return new Set (
38- [ ... this . items . values ( ) ] . filter ( ( item ) =>
33+ this . getItems ( ) . filter ( ( item ) =>
3934 item
4035 . getTitle ( )
4136 . toLowerCase ( )
@@ -46,21 +41,17 @@ export class MediaCollection {
4641
4742 searchByReleaseYear ( releaseYear : number ) : ReadonlySet < MediaItem > {
4843 return new Set (
49- [ ...this . items . values ( ) ] . filter (
50- ( item ) => item . getReleaseYear ( ) === releaseYear ,
51- ) ,
44+ this . getItems ( ) . filter ( ( item ) => item . getReleaseYear ( ) === releaseYear ) ,
5245 ) ;
5346 }
5447
5548 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 ) ) ;
5950 }
6051
6152 searchByCreditName ( name : string ) : ReadonlySet < MediaItem > {
6253 return new Set (
63- [ ... this . items . values ( ) ] . filter ( ( item ) =>
54+ this . getItems ( ) . filter ( ( item ) =>
6455 item . getCredits ( ) . some ( ( credit ) =>
6556 credit
6657 . getName ( )
@@ -71,6 +62,10 @@ export class MediaCollection {
7162 ) ;
7263 }
7364
65+ private getItems ( ) : readonly MediaItem [ ] {
66+ return [ ...this . items . values ( ) ] ;
67+ }
68+
7469 getInfo ( ) {
7570 return {
7671 getItems : ( ) => [ ...this . items ] as readonly [ string , MediaItem ] [ ] ,
0 commit comments