11"use client" ;
22
3- import React , { createContext , useContext , useState , useCallback , type ReactNode } from "react" ;
3+ import React , {
4+ createContext ,
5+ useContext ,
6+ useState ,
7+ useCallback ,
8+ type ReactNode ,
9+ } from "react" ;
410import { useRouter , useSearchParams } from "next/navigation" ;
511import { type IPaper , type Filters } from "@/interface" ;
612import JSZip from "jszip" ;
@@ -27,25 +33,21 @@ interface FilterState {
2733}
2834
2935interface FilterActions {
30-
3136 setSelectedExams : ( exams : string [ ] ) => void ;
3237 setSelectedSlots : ( slots : string [ ] ) => void ;
3338 setSelectedYears : ( years : string [ ] ) => void ;
3439 setSelectedSemesters : ( semesters : string [ ] ) => void ;
3540 setSelectedCampuses : ( campuses : string [ ] ) => void ;
3641 setSelectedAnswerKeyIncluded : ( included : boolean ) => void ;
3742
38-
3943 setPapers : ( papers : IPaper [ ] ) => void ;
4044 setFilteredPapers : ( papers : IPaper [ ] ) => void ;
4145 setFilterOptions : ( options : Filters | undefined ) => void ;
4246
43-
4447 setFiltersPulled : ( pulled : boolean ) => void ;
4548 setAppliedFilters : ( applied : boolean ) => void ;
4649 setCurrentPage : ( page : number ) => void ;
4750
48-
4951 handleApplyFilters : (
5052 exams : string [ ] ,
5153 slots : string [ ] ,
@@ -62,7 +64,6 @@ interface FilterActions {
6264 noAppliedFilters : ( ) => void ;
6365 closeFilters : ( ) => void ;
6466
65-
6667 paginatedPapers : IPaper [ ] ;
6768 totalPages : number ;
6869}
@@ -76,15 +77,19 @@ interface FilterProviderProps {
7677 subject : string | null ;
7778}
7879
79- export const FilterProvider : React . FC < FilterProviderProps > = ( { children, subject } ) => {
80+ export const FilterProvider : React . FC < FilterProviderProps > = ( {
81+ children,
82+ subject,
83+ } ) => {
8084 const router = useRouter ( ) ;
8185
8286 const [ selectedExams , setSelectedExams ] = useState < string [ ] > ( [ ] ) ;
8387 const [ selectedSlots , setSelectedSlots ] = useState < string [ ] > ( [ ] ) ;
8488 const [ selectedYears , setSelectedYears ] = useState < string [ ] > ( [ ] ) ;
8589 const [ selectedSemesters , setSelectedSemesters ] = useState < string [ ] > ( [ ] ) ;
8690 const [ selectedCampuses , setSelectedCampuses ] = useState < string [ ] > ( [ ] ) ;
87- const [ selectedAnswerKeyIncluded , setSelectedAnswerKeyIncluded ] = useState < boolean > ( false ) ;
91+ const [ selectedAnswerKeyIncluded , setSelectedAnswerKeyIncluded ] =
92+ useState < boolean > ( false ) ;
8893
8994 const [ papers , setPapers ] = useState < IPaper [ ] > ( [ ] ) ;
9095 const [ filteredPapers , setFilteredPapers ] = useState < IPaper [ ] > ( [ ] ) ;
@@ -128,7 +133,6 @@ export const FilterProvider: React.FC<FilterProviderProps> = ({ children, subjec
128133
129134 const searchParams = useSearchParams ( ) ;
130135 const handleDownloadSelected = useCallback ( async ( ) => {
131-
132136 if ( selectedPapers . length === 0 ) {
133137 toast . error ( "No papers selected for download." ) ;
134138 return ;
@@ -196,11 +200,20 @@ export const FilterProvider: React.FC<FilterProviderProps> = ({ children, subjec
196200 setSelectedAnswerKeyIncluded ( anskey ) ;
197201 setCurrentPage ( 1 ) ;
198202 } ,
199- [ router , subject , setSelectedExams , setSelectedSlots , setSelectedYears , setSelectedCampuses , setSelectedSemesters , setSelectedAnswerKeyIncluded , setCurrentPage ] ,
203+ [
204+ router ,
205+ subject ,
206+ setSelectedExams ,
207+ setSelectedSlots ,
208+ setSelectedYears ,
209+ setSelectedCampuses ,
210+ setSelectedSemesters ,
211+ setSelectedAnswerKeyIncluded ,
212+ setCurrentPage ,
213+ ] ,
200214 ) ;
201215
202-
203- const paginatedPapers = ( appliedFilters ? filteredPapers : papers ) . slice (
216+ const paginatedPapers = filteredPapers . slice (
204217 ( currentPage - 1 ) * papersPerPage ,
205218 currentPage * papersPerPage ,
206219 ) ;
@@ -251,7 +264,9 @@ export const FilterProvider: React.FC<FilterProviderProps> = ({ children, subjec
251264 totalPages,
252265 } ;
253266
254- return < FilterContext . Provider value = { value } > { children } </ FilterContext . Provider > ;
267+ return (
268+ < FilterContext . Provider value = { value } > { children } </ FilterContext . Provider >
269+ ) ;
255270} ;
256271
257272export const useFilters = ( ) : FilterContextType => {
0 commit comments