Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions src/Modules/Academic/AdminAddDashboard.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import {
deleteAddRequestsRoute,
} from "../../routes/academicRoutes";
import { buildSessionOptions } from "../../lib/academicYear";
import { getApiErrorMessage } from "../../helper/apiError";

const SEMESTER_CHOICES = [
{ value: "Odd Semester", label: "Odd Semester" },
Expand Down Expand Up @@ -71,7 +72,7 @@ export default function AdminAddDashboard() {
setRequests(Array.isArray(data) ? data : []);
} catch (err) {
const errorMsg =
err.response?.data?.error || err.response?.data?.detail || err.message;
getApiErrorMessage(err);
setError(errorMsg || "Failed to load requests");
} finally {
setLoading(false);
Expand Down Expand Up @@ -212,7 +213,7 @@ export default function AdminAddDashboard() {
setSelectedIds(new Set());
await fetchRequests();
} catch (err) {
const errorMsg = err.response?.data?.error || err.message;
const errorMsg = getApiErrorMessage(err);
showNotification({
title: `${action === "approve" ? "Approval" : "Rejection"} Error`,
message: errorMsg || `Failed to ${action} requests`,
Expand Down Expand Up @@ -281,7 +282,7 @@ export default function AdminAddDashboard() {
} catch (err) {
showNotification({
title: "Delete Failed",
message: err.response?.data?.error || err.message,
message: getApiErrorMessage(err),
color: "red",
});
} finally {
Expand Down
7 changes: 4 additions & 3 deletions src/Modules/Academic/AdminDropDashboard.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import {
deleteDropRequestsRoute,
} from "../../routes/academicRoutes";
import { buildSessionOptions } from "../../lib/academicYear";
import { getApiErrorMessage } from "../../helper/apiError";

const SEMESTER_CHOICES = [
{ value: "Odd Semester", label: "Odd Semester" },
Expand Down Expand Up @@ -71,7 +72,7 @@ export default function AdminDropDashboard() {
setRequests(Array.isArray(data) ? data : []);
} catch (err) {
const errorMsg =
err.response?.data?.error || err.response?.data?.detail || err.message;
getApiErrorMessage(err);
setError(errorMsg || "Failed to load requests");
} finally {
setLoading(false);
Expand Down Expand Up @@ -184,7 +185,7 @@ export default function AdminDropDashboard() {
setSelectedIds(new Set());
await fetchRequests();
} catch (err) {
const errorMsg = err.response?.data?.error || err.message;
const errorMsg = getApiErrorMessage(err);
showNotification({
title: `${action === "approve" ? "Approval" : "Rejection"} Error`,
message: errorMsg || `Failed to ${action} requests`,
Expand Down Expand Up @@ -253,7 +254,7 @@ export default function AdminDropDashboard() {
} catch (err) {
showNotification({
title: "Delete Failed",
message: err.response?.data?.error || err.message,
message: getApiErrorMessage(err),
color: "red",
});
} finally {
Expand Down
5 changes: 3 additions & 2 deletions src/Modules/Academic/AdminPhDCourseRequests.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import {
adminVerifyTeachingCreditEnrollmentsRoute,
adminRejectTeachingCreditEnrollmentsRoute,
} from "../../routes/academicRoutes";
import { getApiErrorMessage } from "../../helper/apiError";

const TYPE_LABEL = {
course: "Course",
Expand Down Expand Up @@ -179,7 +180,7 @@ export default function AdminPhDCourseRequests() {
setRows(merged);
} catch (err) {
setError(
err.response?.data?.error || err.message || "Failed to load requests",
getApiErrorMessage(err, "Failed to load requests"),
);
} finally {
setLoading(false);
Expand Down Expand Up @@ -319,7 +320,7 @@ export default function AdminPhDCourseRequests() {
} catch (err) {
showNotification({
title: `${action === "approve" ? "Approval" : "Rejection"} Error`,
message: err.response?.data?.error || err.message,
message: getApiErrorMessage(err),
color: "red",
});
} finally {
Expand Down
9 changes: 5 additions & 4 deletions src/Modules/Academic/AdminReplacementDashboard.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {
deleteReplacementRequestsRoute,
} from '../../routes/academicRoutes';
import { buildSessionLabels } from '../../lib/academicYear';
import { getApiErrorMessage } from "../../helper/apiError";

const SEMESTER_CHOICES = [
{ value: 'Odd Semester', label: 'Odd Semester' },
Expand Down Expand Up @@ -99,7 +100,7 @@ export default function AdminReplacementDashboard() {
headers: { Authorization: `Token ${token}` },
})
.then(({ data }) => setRequests(Array.isArray(data) ? data : []))
.catch(err => setError(err.response?.data?.detail || err.message))
.catch(err => setError(getApiErrorMessage(err)))
.finally(() => setLoading(false));
}, [year, semester]);

Expand Down Expand Up @@ -150,7 +151,7 @@ export default function AdminReplacementDashboard() {
.catch(err => {
showNotification({
title: 'Allocation Error',
message: err.response?.data?.detail || err.message,
message: getApiErrorMessage(err),
color: 'red',
});
})
Expand Down Expand Up @@ -251,7 +252,7 @@ export default function AdminReplacementDashboard() {
} catch (err) {
showNotification({
title: 'Delete Failed',
message: err.response?.data?.error || err.message,
message: getApiErrorMessage(err),
color: 'red',
});
} finally {
Expand Down Expand Up @@ -308,7 +309,7 @@ export default function AdminReplacementDashboard() {
} catch (err) {
showNotification({
title: 'Revert Failed',
message: err.response?.data?.error || err.message,
message: getApiErrorMessage(err),
color: 'red',
});
} finally {
Expand Down
4 changes: 2 additions & 2 deletions src/Modules/Academic/AllotCourses.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import {
allotTeachingCreditRoute,
listBatchesRoute,
} from "../../routes/academicRoutes";
import { getApiErrorMessage } from "../../helper/apiError";

// Course needs a per-row slot/course lookup + academic year + semester type.
// Thesis/Seminar/Teaching Credit each have at most one slot per semester, so
Expand Down Expand Up @@ -140,8 +141,7 @@ export default function AllotCourses() {
console.error("API Error:", err);
const errorMsg =
err.response?.data?.message ||
err.response?.data?.error ||
err.message;
getApiErrorMessage(err);
showNotification({
title: "Error fetching batches",
message: errorMsg,
Expand Down
13 changes: 7 additions & 6 deletions src/Modules/Academic/GenerateStudentList.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import {
listBatchesRoute,
generateprereport,
} from "../../routes/academicRoutes";
import { getApiErrorMessage } from "../../helper/apiError";

const generateAcademicYears = () =>
buildSessionLabels(new Date().getFullYear());
Expand Down Expand Up @@ -130,7 +131,7 @@ export default function GenerateStudentList({ view = "rolllist" }) {
);
} catch (err) {
console.error(err);
setError(err.response?.data?.detail || err.message);
setError(getApiErrorMessage(err));
} finally {
setLoading(false);
}
Expand Down Expand Up @@ -194,7 +195,7 @@ export default function GenerateStudentList({ view = "rolllist" }) {
showNotification({
title: "Error",
message: `Failed to fetch preview data: ${
err.response?.data?.detail || err.message
getApiErrorMessage(err)
}`,
color: "red",
});
Expand Down Expand Up @@ -243,7 +244,7 @@ export default function GenerateStudentList({ view = "rolllist" }) {
} catch (err) {
showNotification({
title: "Export failed",
message: err.response?.data?.error || err.message,
message: getApiErrorMessage(err),
color: "red",
});
} finally {
Expand Down Expand Up @@ -325,7 +326,7 @@ export default function GenerateStudentList({ view = "rolllist" }) {
console.error("Generate List Error:", err);
showNotification({
title: "Error",
message: err.response?.data?.detail || err.message,
message: getApiErrorMessage(err),
color: "red",
});
} finally {
Expand Down Expand Up @@ -393,7 +394,7 @@ export default function GenerateStudentList({ view = "rolllist" }) {
setPreRegData(res.data);
} catch (err) {
const msg =
err.response?.data?.detail || err.message || "Failed to fetch report";
getApiErrorMessage(err, "Failed to fetch report");
setPreRegError(msg);
showNotification({ title: "Error", message: msg, color: "red" });
} finally {
Expand Down Expand Up @@ -450,7 +451,7 @@ export default function GenerateStudentList({ view = "rolllist" }) {
} catch (err) {
showNotification({
title: "Export failed",
message: err.response?.data?.detail || err.message,
message: getApiErrorMessage(err),
color: "red",
});
} finally {
Expand Down
7 changes: 4 additions & 3 deletions src/Modules/Academic/PhDCourseRegistration.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ import {
sourceOf,
takenCourseIds,
} from "./lib/blSlot";
import { getApiErrorMessage } from "../../helper/apiError";

const SUMMARY_COLUMNS = ["Type", "Slot", "Detail", "Credits"];
const REQUEST_COLUMNS = [
Expand Down Expand Up @@ -176,7 +177,7 @@ function PhDCourseRegisterForm() {
} catch (err) {
if (isStale()) return;
if (err.response?.status !== 403) {
setError(err.response?.data?.error || err.message);
setError(getApiErrorMessage(err));
}
} finally {
if (!isStale()) setLoading(false);
Expand Down Expand Up @@ -379,7 +380,7 @@ function PhDCourseRegisterForm() {
} catch (err) {
showNotification({
title: "Submit failed",
message: err.response?.data?.error || err.message,
message: getApiErrorMessage(err),
color: "red",
autoClose: 8000,
});
Expand Down Expand Up @@ -785,7 +786,7 @@ function PhDMyCourseRequests() {
setSeminarInfo(seminarRes.data);
setTeachingCreditInfo(teachingCreditRes.data);
} catch (err) {
setError(err.response?.data?.error || err.message);
setError(getApiErrorMessage(err));
} finally {
setLoading(false);
}
Expand Down
3 changes: 2 additions & 1 deletion src/Modules/Academic/ReplacementRequestStudent.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import {
studentDropRequestsRoute,
studentAddRequestsRoute,
} from "../../routes/academicRoutes";
import { getApiErrorMessage } from "../../helper/apiError";

const REPLACEMENT_COLUMNS = [
"Old course",
Expand Down Expand Up @@ -79,7 +80,7 @@ export default function ReplacementRequestStudent() {
setDropRequests(dropRes.data);
setAddRequests(addRes.data);
})
.catch((err) => setError(err.response?.data?.detail || err.message))
.catch((err) => setError(getApiErrorMessage(err)))
.finally(() => setLoading(false));
}, []);

Expand Down
7 changes: 4 additions & 3 deletions src/Modules/Academic/SectionAssignment.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import {
assignSectionRoute,
} from "../../routes/academicRoutes";
import { useSectionsInUse } from "../../lib/sections";
import { getApiErrorMessage } from "../../helper/apiError";

const OTHER = "__OTHER__";

Expand Down Expand Up @@ -60,7 +61,7 @@ function SectionAssignment() {
} catch (err) {
showNotification({
title: "Failed to load batches",
message: err.response?.data?.detail || err.message,
message: getApiErrorMessage(err),
color: "red",
});
}
Expand Down Expand Up @@ -108,7 +109,7 @@ function SectionAssignment() {
} catch (err) {
showNotification({
title: "Failed to load students",
message: err.response?.data?.detail || err.message,
message: getApiErrorMessage(err),
color: "red",
});
setStudents([]);
Expand Down Expand Up @@ -311,7 +312,7 @@ function SectionAssignment() {
} catch (err) {
showNotification({
title: "Assignment failed",
message: err.response?.data?.detail || err.message,
message: getApiErrorMessage(err),
color: "red",
});
} finally {
Expand Down
5 changes: 3 additions & 2 deletions src/Modules/Academic/StudentAddCourse.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {
studentAvailableAddCoursesRoute,
studentAddCourseRoute,
} from "../../routes/academicRoutes";
import { getApiErrorMessage } from "../../helper/apiError";

export default function StudentAddCourse() {
const [slots, setSlots] = useState([]);
Expand Down Expand Up @@ -55,7 +56,7 @@ export default function StudentAddCourse() {

setSlots(enrichedSlots);
})
.catch((err) => setError(err.response?.data?.error || err.message))
.catch((err) => setError(getApiErrorMessage(err)))
.finally(() => setLoading(false));
}, []);

Expand Down Expand Up @@ -161,7 +162,7 @@ export default function StudentAddCourse() {
} catch (err) {
showNotification({
title: "Submit failed",
message: err.response?.data?.error || err.message,
message: getApiErrorMessage(err),
color: "red",
});
} finally {
Expand Down
5 changes: 3 additions & 2 deletions src/Modules/Academic/StudentCourseReplacement.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import {
studentBatchCreateRoute,
studentListRequestsRoute,
} from "../../routes/academicRoutes";
import { getApiErrorMessage } from "../../helper/apiError";

export default function StudentCourseReplacement() {
const [slots, setSlots] = useState([]);
Expand Down Expand Up @@ -59,7 +60,7 @@ export default function StudentCourseReplacement() {
}
})
.catch((err) => {
setError(err.response?.data?.error || err.message);
setError(getApiErrorMessage(err));
})
.finally(() => setLoading(false));
}, []);
Expand Down Expand Up @@ -120,7 +121,7 @@ export default function StudentCourseReplacement() {
} catch (err) {
showNotification({
title: "Submit failed",
message: err.response?.data?.error || err.message,
message: getApiErrorMessage(err),
color: "red",
});
} finally {
Expand Down
Loading
Loading