@@ -11,23 +11,35 @@ function SearchResults({ results = [], showDesc, itemsPerPage, searchPerformed,
1111 const [ availableDistributions , setAvailableDistributions ] = useState ( [ 'All' ] ) ;
1212
1313 useEffect ( ( ) => {
14- updateAvailableDistributions ( ) ;
15- } , [ selectedParentDistributions , osList ] ) ;
16-
17- useEffect ( ( ) => {
18- updatePaginatedResults ( ) ;
19- } , [ currentPage , itemsPerPage , refinePackageName , results , selectedDistribution ] ) ;
20-
21- const updateAvailableDistributions = ( ) => {
22- const childDistributions = selectedParentDistributions . flatMap ( parent =>
14+ const childDistributions = selectedParentDistributions . flatMap ( parent =>
2315 Object . keys ( osList [ parent ] || { } )
2416 ) ;
2517 setAvailableDistributions ( [ 'All' , ...new Set ( childDistributions ) ] ) ;
26-
18+
2719 if ( ! childDistributions . includes ( selectedDistribution ) && selectedDistribution !== 'All' ) {
2820 setSelectedDistribution ( 'All' ) ;
2921 }
30- } ;
22+ } , [ selectedParentDistributions , osList , selectedDistribution ] ) ;
23+
24+ useEffect ( ( ) => {
25+ if ( ! Array . isArray ( results ) ) {
26+ setPaginatedResults ( [ ] ) ;
27+ return ;
28+ }
29+ const filteredByName = results . filter ( ( result ) => {
30+ const nameMatch = result . packageName . toLowerCase ( ) . includes ( refinePackageName . toLowerCase ( ) ) ;
31+ const versionMatch = result . version . toLowerCase ( ) . includes ( refinePackageName . toLowerCase ( ) ) ;
32+ return nameMatch || versionMatch ;
33+ } ) ;
34+ const filteredResults = selectedDistribution === 'All'
35+ ? filteredByName
36+ : filteredByName . filter ( result =>
37+ result . ostag . split ( ',' ) . map ( tag => tag . trim ( ) ) . includes ( selectedDistribution )
38+ ) ;
39+ const start = currentPage * itemsPerPage ;
40+ const end = start + itemsPerPage ;
41+ setPaginatedResults ( filteredResults . slice ( start , end ) ) ;
42+ } , [ currentPage , itemsPerPage , refinePackageName , results , selectedDistribution ] ) ;
3143
3244 const filterResults = ( ) => {
3345 if ( ! Array . isArray ( results ) ) return [ ] ;
@@ -47,14 +59,7 @@ function SearchResults({ results = [], showDesc, itemsPerPage, searchPerformed,
4759 } ) ;
4860 }
4961 } ;
50-
51- const updatePaginatedResults = ( ) => {
52- const filteredResults = filterResults ( ) ;
53- const start = currentPage * itemsPerPage ;
54- const end = start + itemsPerPage ;
55- setPaginatedResults ( filteredResults . slice ( start , end ) ) ;
56- } ;
57-
62+
5863 const handlePageChange = ( selectedPage ) => {
5964 setCurrentPage ( selectedPage . selected ) ;
6065 } ;
@@ -66,6 +71,7 @@ function SearchResults({ results = [], showDesc, itemsPerPage, searchPerformed,
6671 } ) ;
6772 } ;
6873
74+
6975 const handleDistributionChange = ( e ) => {
7076 setSelectedDistribution ( e . target . value ) ;
7177 setCurrentPage ( 0 ) ; // Reset to first page when changing distribution
0 commit comments