Skip to content

Commit d28a18f

Browse files
Merge pull request #406 from Advik-Gupta/staging
Fix: Filter error on navigated page (401)
2 parents 05de69e + 9977031 commit d28a18f

2 files changed

Lines changed: 58 additions & 35 deletions

File tree

src/components/CatalogueContent.tsx

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ const CatalogueContentInner = ({ subject }: { subject: string | null }) => {
6060
handleDownloadSelected,
6161
} = useFilters();
6262

63+
useEffect(() => {
64+
setCurrentPage(1);
65+
}, [subject]);
66+
6367
// Fetch related subjects when subject changes
6468
useEffect(() => {
6569
if (!subject) return;
@@ -92,11 +96,21 @@ const CatalogueContentInner = ({ subject }: { subject: string | null }) => {
9296
localStorage.getItem("userSubjects") ?? "[]",
9397
) as StoredSubjects;
9498
const subjectName = searchParams.get("subject");
95-
setSelectedExams(searchParams.get("exams")?.split(",").filter(Boolean) ?? []);
96-
setSelectedSlots(searchParams.get("slots")?.split(",").filter(Boolean) ?? []);
97-
setSelectedYears(searchParams.get("years")?.split(",").filter(Boolean) ?? []);
98-
setSelectedCampuses(searchParams.get("campus")?.split(",").filter(Boolean) ?? []);
99-
setSelectedSemesters(searchParams.get("semester")?.split(",").filter(Boolean) ?? []);
99+
setSelectedExams(
100+
searchParams.get("exams")?.split(",").filter(Boolean) ?? [],
101+
);
102+
setSelectedSlots(
103+
searchParams.get("slots")?.split(",").filter(Boolean) ?? [],
104+
);
105+
setSelectedYears(
106+
searchParams.get("years")?.split(",").filter(Boolean) ?? [],
107+
);
108+
setSelectedCampuses(
109+
searchParams.get("campus")?.split(",").filter(Boolean) ?? [],
110+
);
111+
setSelectedSemesters(
112+
searchParams.get("semester")?.split(",").filter(Boolean) ?? [],
113+
);
100114
setSelectedAnswerKeyIncluded(searchParams.get("answerkey") === "true");
101115
if (subjectName && Array.isArray(currentPinnedSubjects)) {
102116
if (currentPinnedSubjects.includes(subjectName)) {
@@ -106,7 +120,15 @@ const CatalogueContentInner = ({ subject }: { subject: string | null }) => {
106120
}
107121
}
108122
}
109-
}, [searchParams, setSelectedExams, setSelectedSlots, setSelectedYears, setSelectedSemesters, setSelectedCampuses, setSelectedAnswerKeyIncluded]);
123+
}, [
124+
searchParams,
125+
setSelectedExams,
126+
setSelectedSlots,
127+
setSelectedYears,
128+
setSelectedSemesters,
129+
setSelectedCampuses,
130+
setSelectedAnswerKeyIncluded,
131+
]);
110132

111133
const handlePinToggle = () => {
112134
const current = !pinned;
@@ -151,12 +173,7 @@ const CatalogueContentInner = ({ subject }: { subject: string | null }) => {
151173
};
152174

153175
void fetchPapers();
154-
}, [
155-
subject,
156-
isMounted,
157-
setPapers,
158-
setFilterOptions,
159-
]);
176+
}, [subject, isMounted, setPapers, setFilterOptions]);
160177

161178
useEffect(() => {
162179
if (!papers.length) return;
@@ -189,15 +206,14 @@ const CatalogueContentInner = ({ subject }: { subject: string | null }) => {
189206
answerkeyCondition
190207
);
191208
});
192-
193209
setFilteredPapers(filtered);
194210
setAppliedFilters(
195211
selectedExams.length > 0 ||
196-
selectedSlots.length > 0 ||
197-
selectedYears.length > 0 ||
198-
selectedSemesters.length > 0 ||
199-
selectedCampuses.length > 0 ||
200-
selectedAnswerKeyIncluded
212+
selectedSlots.length > 0 ||
213+
selectedYears.length > 0 ||
214+
selectedSemesters.length > 0 ||
215+
selectedCampuses.length > 0 ||
216+
selectedAnswerKeyIncluded,
201217
);
202218
}, [
203219
papers,

src/components/SideBar.tsx

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,18 @@ function SideBar() {
1717
selectedAnswerKeyIncluded,
1818
filterOptions,
1919
handleApplyFilters,
20+
setCurrentPage,
2021
} = useFilters();
2122
const exams =
22-
filterOptions?.unique_exams.map((exam) => ({ label: exam, value: exam })) ?? [];
23+
filterOptions?.unique_exams.map((exam) => ({ label: exam, value: exam })) ??
24+
[];
2325
const slots =
2426
filterOptions?.unique_slots
2527
.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }))
2628
.map((slot) => ({ label: slot, value: slot })) ?? [];
2729
const years =
2830
filterOptions?.unique_years
29-
.sort((a, b) => b.localeCompare(a))
31+
.sort((a, b) => b.localeCompare(a))
3032
.map((year) => ({ label: year, value: year })) ?? [];
3133
const semesters =
3234
filterOptions?.unique_semesters.map((semester) => ({
@@ -39,57 +41,61 @@ function SideBar() {
3941
label: "Exams",
4042
data: exams,
4143
selected: selectedExams,
42-
updater: (newVal: string[]) =>
44+
updater: (newVal: string[]) => {
4345
handleApplyFilters(
4446
newVal,
4547
selectedSlots,
4648
selectedYears,
4749
selectedCampuses,
4850
selectedSemesters,
49-
selectedAnswerKeyIncluded
50-
),
51+
selectedAnswerKeyIncluded,
52+
);
53+
},
5154
},
5255
{
5356
label: "Slots",
5457
data: slots,
5558
selected: selectedSlots,
56-
updater: (newVal: string[]) =>
59+
updater: (newVal: string[]) => {
5760
handleApplyFilters(
5861
selectedExams,
5962
newVal,
6063
selectedYears,
6164
selectedCampuses,
6265
selectedSemesters,
63-
selectedAnswerKeyIncluded
64-
),
66+
selectedAnswerKeyIncluded,
67+
);
68+
},
6569
},
6670
{
6771
label: "Years",
6872
data: years,
6973
selected: selectedYears,
70-
updater: (newVal: string[]) =>
74+
updater: (newVal: string[]) => {
7175
handleApplyFilters(
7276
selectedExams,
7377
selectedSlots,
7478
newVal,
7579
selectedCampuses,
7680
selectedSemesters,
77-
selectedAnswerKeyIncluded
78-
),
81+
selectedAnswerKeyIncluded,
82+
);
83+
},
7984
},
8085
{
8186
label: "Semesters",
8287
data: semesters,
8388
selected: selectedSemesters,
84-
updater: (newVal: string[]) =>
89+
updater: (newVal: string[]) => {
8590
handleApplyFilters(
8691
selectedExams,
8792
selectedSlots,
8893
selectedYears,
8994
selectedCampuses,
9095
newVal,
91-
selectedAnswerKeyIncluded
92-
),
96+
selectedAnswerKeyIncluded,
97+
);
98+
},
9399
},
94100
];
95101

@@ -100,7 +106,9 @@ function SideBar() {
100106
<Filter size={24} />
101107
<div className="font-play text-xl font-bold">Filters</div>
102108
</div>
103-
<SidebarButton onClick={() => handleApplyFilters([], [], [], [], [], false)}>
109+
<SidebarButton
110+
onClick={() => handleApplyFilters([], [], [], [], [], false)}
111+
>
104112
Reset Filters
105113
</SidebarButton>
106114
</div>
@@ -115,15 +123,14 @@ function SideBar() {
115123
selectedYears,
116124
selectedCampuses,
117125
selectedSemesters,
118-
!selectedAnswerKeyIncluded
126+
!selectedAnswerKeyIncluded,
119127
)
120128
}
121129
>
122130
Answer Key Available
123131
</SidebarButton>
124132
</div>
125133

126-
127134
{filtersForSidebar.map((section) => (
128135
<SidebarSection
129136
key={section.label}

0 commit comments

Comments
 (0)