Skip to content

Commit 6938b21

Browse files
committed
fix: lint errors
1 parent 1f0ff3c commit 6938b21

3 files changed

Lines changed: 20 additions & 19 deletions

File tree

src/app/actions/get-papers-by-id.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { type PaperResponse, ApiResponse } from "@/interface";
1+
import type { PaperResponse, ApiResponse } from "@/interface";
22
import axios, { type AxiosResponse } from "axios";
33

44
export const fetchPaperID = async (id: string): Promise<PaperResponse> => {
@@ -14,10 +14,9 @@ export const fetchPaperID = async (id: string): Promise<PaperResponse> => {
1414
}
1515
return response.data.data;
1616
} catch (err: unknown) {
17-
if (axios.isAxiosError(err)) {
18-
console.error("Axios error:", err.response?.data.message ?? err.message);
19-
const errorMessage =
20-
(err.response?.data.message ?? "Failed to fetch paper");
17+
if (axios.isAxiosError<ApiResponse<unknown>>(err)) {
18+
const errorMessage = err.response?.data?.message ?? err.message;
19+
console.error("Axios error:", errorMessage);
2120
throw new Error(errorMessage);
2221
} else {
2322
console.error("Unexpected error:", err);

src/app/upload/page.tsx

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use client";
22

3-
import { useCallback, useEffect, useState } from "react";
3+
import { useCallback, useEffect, useState, useRef } from "react";
44
import toast from "react-hot-toast";
55
import { Button } from "@/components/ui/button";
66
import axios, { AxiosError } from "axios";
@@ -13,7 +13,7 @@ import {
1313
TouchSensor,
1414
useSensor,
1515
useSensors,
16-
DragEndEvent,
16+
type DragEndEvent,
1717
} from "@dnd-kit/core";
1818
import {
1919
arrayMove,
@@ -24,17 +24,12 @@ import {
2424
import { CSS } from "@dnd-kit/utilities";
2525
import Dropzone from "react-dropzone";
2626
import { Upload, XIcon } from "lucide-react";
27-
import { getDocument, GlobalWorkerOptions } from "pdfjs-dist";
28-
import { type ApiResponse } from "@/interface"
27+
import { GlobalWorkerOptions } from "pdfjs-dist";
28+
import type { ApiResponse } from "@/interface"
2929

3030
GlobalWorkerOptions.workerSrc =
3131
"https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.8.69/pdf.worker.min.mjs";
3232

33-
interface APIResponse {
34-
status: string;
35-
message?: string;
36-
}
37-
3833
interface uploadResponse {
3934
file_url: string;
4035
thumbnail_url: string;
@@ -49,6 +44,12 @@ export default function Page() {
4944
const [isGlobalDragging, setIsGlobalDragging] = useState(false);
5045
const [zoomIndex, setZoomIndex] = useState<number | null>(null);
5146

47+
const previewsRef = useRef(previews);
48+
49+
useEffect(() => {
50+
previewsRef.current = previews;
51+
}, [previews]);
52+
5253
useEffect(() => {
5354
const onDragEnter = () => setIsGlobalDragging(true);
5455
const onDragLeave = () => setIsGlobalDragging(false);
@@ -68,7 +69,7 @@ export default function Page() {
6869
// Cleanup previews on unmount
6970
useEffect(() => {
7071
return () => {
71-
previews.forEach((item) => {
72+
previewsRef.current.forEach((item) => {
7273
try {
7374
URL.revokeObjectURL(item.preview);
7475
} catch {}
@@ -281,10 +282,10 @@ export default function Page() {
281282
await axios.post<ApiResponse<uploadResponse>>("/api/upload", formData);
282283
return { message: "Papers uploaded successfully!" };
283284
} catch (error) {
284-
if (error instanceof AxiosError && error.response?.data) {
285-
const errorData = error.response.data;
285+
if (error instanceof AxiosError) {
286+
const errorData = error?.response?.data as ApiResponse<unknown>;
286287
const errorMessage =
287-
errorData.message ?? "Failed to upload papers";
288+
errorData?.message ?? "Failed to upload papers";
288289
throw new Error(errorMessage);
289290
}
290291
throw new Error("Failed to upload papers");

src/components/Footer.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
} from "react-icons/fa6";
1616
import { Bold, Mail } from "lucide-react";
1717
import toast from "react-hot-toast";
18+
import type { ApiResponse } from '@/interface'
1819

1920
type SubscribeResponse = {
2021
success?: boolean;
@@ -43,7 +44,7 @@ export default function Footer() {
4344
body: JSON.stringify({ email }),
4445
})
4546
.then(async (res) => {
46-
const data = (await res.json()).data as SubscribeResponse;
47+
const data = (await res.json()) as ApiResponse<never>;
4748
if (!res.ok) throw new Error(data.message ?? "Something went wrong.");
4849
return data;
4950
}),

0 commit comments

Comments
 (0)