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