@@ -47,7 +47,7 @@ const parseToStreamer = (
4747export const VspoStreamProvider = ( { children } : { children : ReactNode } ) => {
4848 const [ streamResponses , setStreamsResponse ] = useState < StreamResponse [ ] > ( [ ] ) ;
4949 const [ streamerMap , setStreamerMap ] = useState < StreamerMap > ( { } ) ;
50- const { filteredStreamerIds } = useSettings ( ) ;
50+ const { filteredStreamerIds, filteredTitle } = useSettings ( ) ;
5151
5252 useEffect ( ( ) => {
5353 const streamCollectionName = import . meta. env . VITE_STREAM_COLLECTION_NAME ;
@@ -97,6 +97,8 @@ export const VspoStreamProvider = ({ children }: { children: ReactNode }) => {
9797 } , [ ] ) ;
9898
9999 const streams = useMemo < Stream [ ] > ( ( ) => {
100+ const titleFilterLower = filteredTitle . trim ( ) . toLowerCase ( ) ;
101+
100102 return streamResponses . reduce ( ( results : Stream [ ] , streamRes ) => {
101103 const channel = streamerMap [ streamRes . streamerId ] [ streamRes . platform ] ;
102104
@@ -113,9 +115,17 @@ export const VspoStreamProvider = ({ children }: { children: ReactNode }) => {
113115 return results ;
114116 }
115117
118+ // filter by title
119+ if (
120+ titleFilterLower !== "" &&
121+ ! streamRes . title . toLowerCase ( ) . includes ( titleFilterLower )
122+ ) {
123+ return results ;
124+ }
125+
116126 return results . concat ( parseToStream ( streamRes , channel ) ) ;
117127 } , [ ] ) ;
118- } , [ streamResponses , streamerMap , filteredStreamerIds ] ) ;
128+ } , [ streamResponses , streamerMap , filteredStreamerIds , filteredTitle ] ) ;
119129
120130 const streamers = useMemo < Streamer [ ] > (
121131 ( ) => Object . values ( streamerMap ) ,
0 commit comments