Skip to content

Commit ad5a77b

Browse files
authored
Merge branch 'prod' into prod
2 parents 27164ff + db777ef commit ad5a77b

23 files changed

Lines changed: 565 additions & 455 deletions

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
"google-auth-library": "^10.2.1",
4040
"googleapis": "^155.0.0",
4141
"jose": "^5.10.0",
42+
"jszip": "^3.10.1",
4243
"lodash": "^4.17.21",
4344
"lucide-react": "^0.395.0",
4445
"mongoose": "^8.13.2",

pnpm-lock.yaml

Lines changed: 70 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/app/api/course-list/route.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { NextResponse } from "next/server";
22
import { connectToDatabase } from "@/lib/mongoose";
3-
import { Course } from "@/db/papers";
3+
import { Course } from "@/db/course";
44

55
export const dynamic = "force-dynamic";
66

@@ -14,7 +14,7 @@ export async function GET() {
1414
console.error(error);
1515
return NextResponse.json(
1616
{ message: "Failed to fetch courses", error },
17-
{ status: 500 }
17+
{ status: 500 },
1818
);
1919
}
2020
}

src/app/api/papers/count/route.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
11
import { NextResponse } from "next/server";
22
import { connectToDatabase } from "@/lib/mongoose";
3-
import Paper from "@/db/papers";
3+
import CourseCount from "@/db/course";
44

55
export const dynamic = "force-dynamic";
6+
67
export async function GET(req: Request) {
78
try {
89
await connectToDatabase();
910

10-
const { searchParams } = new URL(req.url);
11-
const subject = searchParams.get("subject");
11+
const count = await CourseCount.find().lean();
1212

13-
const filter = subject ? { subject } : {};
14-
const count = await Paper.countDocuments(filter);
13+
const formatted = count.map((item) => ({
14+
name: item.name,
15+
count: item.count,
16+
}));
1517

16-
return NextResponse.json({ count }, { status: 200 });
18+
return NextResponse.json(formatted, { status: 200 });
1719
} catch (error) {
1820
return NextResponse.json(
19-
{ message: "Failed to fetch papers", error },
21+
{ message: "Failed to fetch course counts", error },
2022
{ status: 500 },
2123
);
2224
}

src/app/api/upload/route.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ export async function POST(req: Request) {
5959

6060
let final_url: string | undefined = "";
6161
let public_id_cloudinary: string | undefined = "";
62-
let thumbnail_url: string | undefined = "";
6362

6463
if (!files || files.length === 0) {
6564
return NextResponse.json(
@@ -93,19 +92,13 @@ export async function POST(req: Request) {
9392
);
9493
}
9594

96-
const thumbnailResponse = cloudinary.v2.image(final_url!, {
97-
format: "jpg",
98-
});
99-
thumbnail_url = thumbnailResponse
100-
.replace("pdf", "jpg")
101-
.replace("upload", "upload/w_400,h_400,c_fill")
102-
.replace(/<img src='|'\s*\/>/g, "");
10395

10496
const paper = new PaperAdmin({
10597
cloudinary_index: configIndex,
98+
10699
public_id_cloudinary,
107100
final_url,
108-
thumbnail_url,
101+
thumbnail_url: null,
109102
subject: null,
110103
slot: null,
111104
year: null,

src/app/layout.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import type { Metadata } from "next";
77
import Navbar from "@/components/Navbar";
88
import Footer from "@/components/Footer";
99
import ChildrenWrapper from "@/components/ChildrenWrapper";
10+
import { CoursesProvider } from "@/context/courseContext";
11+
1012
export const metadata: Metadata = {
1113
metadataBase: new URL("https://papers.codechefvit.com/"),
1214
title: "Papers by CodeChef-VIT | Explore VIT Previous Year Question Papers",
@@ -119,9 +121,11 @@ export default function RootLayout({
119121
>
120122
<Toaster position="top-right" reverseOrder={false} />
121123
<div className="bg-[#F3F5FF] dark:bg-[#070114]">
122-
<Navbar />
123-
<ChildrenWrapper>{children}</ChildrenWrapper>
124-
<Footer />
124+
<CoursesProvider>
125+
<Navbar />
126+
<ChildrenWrapper>{children}</ChildrenWrapper>
127+
<Footer />
128+
</CoursesProvider>
125129
</div>
126130
</ThemeProvider>
127131
</body>

src/app/paper/[id]/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export async function generateMetadata({
2121
metadataBase: new URL("https://papers.codechefvit.com/"),
2222
title: `Papers | ${paper.subject} | ${paper.exam} | ${paper.slot}`,
2323
description: `Discover ${paper.subject}'s question paper created by CodeChef-VIT at Vellore Institute of Technology. Made with ♡ to help students excel.`,
24-
icons: [{ rel: "icon", url: "/codechef_logo.svg" }],
24+
icons: [{ rel: "icon", url: "/favicon.svg" }],
2525
openGraph: {
2626
title: `Papers | ${paper.subject} | ${paper.exam} | ${paper.slot}`,
2727
images: [{ url: "/papers.png" }],

src/app/pinned/page.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,23 @@ import { useState } from "react";
88

99
const Pinned = () => {
1010
const [displayPapers, setDisplayPapers] = useState<IUpcomingPaper[]>([]);
11+
1112
return (
1213
<div id="pinned" className="mt-5 flex flex-col justify-between">
1314
<h1 className="mx-auto my-8 text-center font-vipnabd text-xl font-extrabold sm:text-2xl md:text-3xl">
1415
Pinned Subjects
1516
</h1>
1617
<div className="mb-3 flex w-full flex-col items-center gap-2 px-6">
1718
<div className="w-full">
18-
<SearchBar type="pinned" displayPapers = {displayPapers.length > 0} />
19+
<SearchBar type="pinned" displayPapers={displayPapers.length > 0} />
1920
</div>
2021
</div>
2122
<div className="min-h-[40vh]">
22-
<PinnedPapersCarousel carouselType="users" displayPapers = {displayPapers} setDisplayPapers = {setDisplayPapers} />
23+
<PinnedPapersCarousel
24+
carouselType="users"
25+
displayPapers={displayPapers}
26+
setDisplayPapers={setDisplayPapers}
27+
/>
2328
</div>
2429
{/* <div className="mt-6 flex w-full items-center justify-center">
2530
<p>You can pin upto 8 Subjects here</p>

0 commit comments

Comments
 (0)