Skip to content

Commit c01319f

Browse files
im dying
1 parent 69bb49d commit c01319f

File tree

4 files changed

+82
-36
lines changed

4 files changed

+82
-36
lines changed

src/app/upload/page.tsx

Lines changed: 55 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@ import {
1818
SelectLabel,
1919
SelectItem,
2020
} from "@/components/ui/select";
21+
import {
22+
Command,
23+
CommandInput,
24+
CommandList,
25+
CommandItem,
26+
CommandEmpty,
27+
CommandGroup,
28+
} from "@/components/ui/command";
2129
import Navbar from "@/components/Navbar";
2230
import Footer from "@/components/Footer";
2331

@@ -31,6 +39,7 @@ const Page = () => {
3139
const [exam, setExam] = useState("");
3240
const [year, setYear] = useState("");
3341
const [files, setFiles] = useState<File[]>([]);
42+
const [isSubjectCommandOpen, setIsSubjectCommandOpen] = useState(false);
3443
// const toggleOpenCamera = () => {
3544
// setOpenCamera((prev) => !prev);
3645
// };
@@ -102,8 +111,13 @@ const Page = () => {
102111
}
103112
};
104113

114+
const handleSubjectSelect = (value: string) => {
115+
setSubject(value);
116+
setIsSubjectCommandOpen(false);
117+
};
118+
105119
return (
106-
<div className="h-screen flex flex-col justify-between">
120+
<div className="flex h-screen flex-col justify-between">
107121
<div>
108122
<Navbar />
109123
</div>
@@ -153,21 +167,47 @@ const Page = () => {
153167
{/* Subject Selection */}
154168
<div>
155169
<label>Subject:</label>
156-
<Select value={subject} onValueChange={setSubject}>
157-
<SelectTrigger className="m-2 rounded-md border p-2">
158-
<SelectValue placeholder="Select subject" />
159-
</SelectTrigger>
160-
<SelectContent>
161-
<SelectGroup>
162-
<SelectLabel>Subjects</SelectLabel>
170+
{/* <div className="relative">
171+
<Button
172+
type="button"
173+
onClick={() => setIsSubjectCommandOpen((prev) => !prev)}
174+
className="m-2 rounded-md border p-2"
175+
>
176+
{subject || "Select subject"}
177+
</Button>
178+
{isSubjectCommandOpen && (
179+
<Command className="absolute z-10 mt-2 w-full rounded-lg border shadow-md">
180+
<CommandInput placeholder="Search subject..." />
181+
<CommandList>
182+
<CommandEmpty>No subjects found.</CommandEmpty>
183+
<CommandGroup heading="Subjects">
184+
{courses.map((course) => (
185+
<CommandItem key={course} onSelect={() => handleSubjectSelect(course)}>
186+
<span>{course}</span>
187+
</CommandItem>
188+
))}
189+
</CommandGroup>
190+
</CommandList>
191+
</Command>
192+
)}
193+
</div> */}
194+
<Command className="rounded-lg border shadow-md md:min-w-[450px]">
195+
<CommandInput placeholder="Type a subject or search..." />
196+
<CommandList className="h-[100px]">
197+
<CommandEmpty>No results found.</CommandEmpty>
198+
199+
<CommandGroup heading="Subjects">
163200
{courses.map((course) => (
164-
<SelectItem key={course} value={course}>
165-
{course}
166-
</SelectItem>
201+
<CommandItem
202+
key={course}
203+
onSelect={() => handleSubjectSelect(course)}
204+
>
205+
<span>{course}</span>
206+
</CommandItem>
167207
))}
168-
</SelectGroup>
169-
</SelectContent>
170-
</Select>
208+
</CommandGroup>
209+
</CommandList>
210+
</Command>
171211
</div>
172212

173213
{/* Year Selection */}
@@ -232,7 +272,7 @@ const Page = () => {
232272
</fieldset>
233273
<Button
234274
onClick={handlePrint}
235-
className="w-fit rounded-md px-4 py-3 text-lg font-bold"
275+
className="w-fit rounded-md px-4 py-3"
236276
>
237277
Upload Papers
238278
</Button>

src/components/Card.tsx

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ const Card = ({
2727
}, [isSelected]);
2828

2929
const handleDownload = async (paper: Paper) => {
30-
const extension = paper.finalUrl.split(".").pop();
31-
const fileName = `${extractBracketContent(paper.subject)}-${paper.exam}-${paper.slot}-${paper.year}.${extension}`;
32-
await downloadFile(paper.finalUrl, fileName);
30+
const extension = paper.finalUrl.split(".").pop();
31+
const fileName = `${extractBracketContent(paper.subject)}-${paper.exam}-${paper.slot}-${paper.year}.${extension}`;
32+
await downloadFile(paper.finalUrl, fileName);
3333
};
3434

3535
function handleCheckboxChange() {
@@ -52,16 +52,24 @@ const Card = ({
5252
}
5353

5454
function handleOpen() {
55-
window.open(paper.finalUrl, "_blank");
56-
const storedPapers = JSON.parse(localStorage.getItem("clickedPapers") ?? "[]");
57-
const paperExists = storedPapers.some((storedPaper: Paper) => storedPaper._id === paper._id);
55+
const storedPapers = JSON.parse(
56+
localStorage.getItem("clickedPapers") ?? "[]",
57+
);
58+
const paperExists = storedPapers.some(
59+
(storedPaper: Paper) => storedPaper._id === paper._id,
60+
);
5861
if (!paperExists) {
59-
const updatedPapers = [paper, ...storedPapers];
60-
const lastThreePapers = updatedPapers.slice(0, 4);
61-
localStorage.setItem("clickedPapers", JSON.stringify(lastThreePapers));
62+
const updatedPapers = [paper, ...storedPapers];
63+
const lastThreePapers = updatedPapers.slice(0, 4);
64+
localStorage.setItem("clickedPapers", JSON.stringify(lastThreePapers));
6265
}
63-
}
64-
66+
const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
67+
if (isMobile) {
68+
router.push(paper.finalUrl);
69+
} else {
70+
window.open(paper.finalUrl, "_blank");
71+
}
72+
}
6573

6674
return (
6775
<div
@@ -83,7 +91,7 @@ const Card = ({
8391
<div className="text-md font-medium">
8492
{extractWithoutBracketContent(paper.subject)}
8593
</div>
86-
<div className="py-2 flex gap-2">
94+
<div className="flex gap-2 py-2">
8795
{capsule(paper.exam)}
8896
{capsule(paper.slot)}
8997
{capsule(paper.year)}
@@ -98,11 +106,9 @@ const Card = ({
98106
/>
99107
<p className="text-sm">Select</p>
100108
</div>
101-
<div className="flex gap-2" onClick={handleOpen}>
102-
<Eye size={20} className="cursor-pointer" />
103-
<button
104-
onClick={() => handleDownload(paper)}
105-
>
109+
<div className="flex gap-2">
110+
<Eye size={20} className="cursor-pointer" onClick={handleOpen} />
111+
<button onClick={() => handleDownload(paper)}>
106112
<Download size={20} />
107113
</button>
108114
</div>

src/components/Footer.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export default function Footer() {
2222
}, [theme]);
2323

2424
return (
25-
<div className="mx-auto flex flex-col items-center justify-between gap-y-12 pt-12 md:pt-8 lg:w-full lg:flex-row lg:justify-around lg:px-12">
25+
<div className="mx-auto flex flex-col items-center justify-between gap-y-12 pt-12 md:pt-8 lg:w-full lg:flex-row lg:justify-around lg:px-12 mb-4">
2626
<div className="flex items-center">
2727
<h1 className="jost bg-gradient-to-r from-[#562EE7] to-[#FFC6E8] bg-clip-text text-center text-3xl font-bold text-transparent lg:text-5xl">
2828
Papers

src/components/Navbar.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import Link from "next/link";
77

88
function Navbar() {
99
return (
10-
<div className="flex items-center justify-between px-4 py-6 md:px-12">
11-
<div className="hiddaen w-[20%] md:block">
10+
<div className="flex items-center justify-between px-2 gap-x-3 py-6 md:px-12">
11+
<div className="hidden w-[20%] md:block">
1212
<a href="https://www.codechefvit.com/" className="inline-block">
1313
<Image
1414
src={ccLogo as HTMLImageElement}
@@ -31,7 +31,7 @@ function Navbar() {
3131
<Link href="/upload">
3232
<Button
3333
variant="outline"
34-
className="rounded-full px-6 py-4 text-xs md:text-sm"
34+
className="rounded-full px-6 py-4 text-xs md:text-sm mt-2 md:mt-0"
3535
>
3636
<ArrowUpToLine />
3737
<span>UPLOAD PAPERS</span>

0 commit comments

Comments
 (0)