22
33import { useState } from 'react' ;
44import { useRouter } from 'next/navigation' ;
5- import { Extension , ExtensionListParams , SortDirection , ExtensionSortField } from '@/redux/types/extension' ;
6- import { useGetExtensionsQuery , useRunExtensionMutation , useCancelExecutionMutation } from '@/redux/services/extensions/extensionsApi' ;
5+ import { Extension , ExtensionListParams , SortDirection , ExtensionSortField , ExtensionCategory } from '@/redux/types/extension' ;
6+ import { useGetExtensionsQuery , useRunExtensionMutation , useCancelExecutionMutation , useGetExtensionCategoriesQuery } from '@/redux/services/extensions/extensionsApi' ;
77
88export function useExtensions ( ) {
99 const router = useRouter ( ) ;
@@ -16,9 +16,11 @@ export function useExtensions() {
1616 const [ itemsPerPage ] = useState ( 9 ) ;
1717 const [ runModalOpen , setRunModalOpen ] = useState ( false ) ;
1818 const [ selectedExtension , setSelectedExtension ] = useState < Extension | null > ( null ) ;
19+ const [ selectedCategory , setSelectedCategory ] = useState < ExtensionCategory | null > ( null ) ;
1920
2021 const queryParams : ExtensionListParams = {
2122 search : searchTerm || undefined ,
23+ category : selectedCategory || undefined ,
2224 sort_by : sortConfig . key ,
2325 sort_dir : sortConfig . direction ,
2426 page : currentPage ,
@@ -31,6 +33,8 @@ export function useExtensions() {
3133 error : apiError
3234 } = useGetExtensionsQuery ( queryParams ) ;
3335
36+ const { data : categories = [ ] } = useGetExtensionCategoriesQuery ( ) ;
37+
3438 const extensions = response ?. extensions || [ ] ;
3539 const totalPages = response ?. total_pages || 0 ;
3640 const totalExtensions = response ?. total || 0 ;
@@ -45,6 +49,11 @@ export function useExtensions() {
4549 setCurrentPage ( 1 ) ; // Reset to first page when sorting
4650 } ;
4751
52+ const handleCategoryChange = ( value : string | null ) => {
53+ setSelectedCategory ( ( value as ExtensionCategory ) || null ) ;
54+ setCurrentPage ( 1 ) ;
55+ } ;
56+
4857 const handlePageChange = ( page : number ) => {
4958 setCurrentPage ( page ) ;
5059 } ;
@@ -81,13 +90,16 @@ export function useExtensions() {
8190 extensions,
8291 isLoading,
8392 error,
93+ categories,
8494 searchTerm,
8595 sortConfig,
8696 currentPage,
8797 totalPages,
8898 totalExtensions,
8999 handleSearchChange,
90100 handleSortChange,
101+ selectedCategory,
102+ handleCategoryChange,
91103 handlePageChange,
92104 handleInstall,
93105 handleViewDetails,
0 commit comments