11"use client" ;
22
3- import { useEffect , useState } from "react" ;
43import { type IPaper } from "@/interface" ;
54import Image from "next/image" ;
65import { Eye , Download , Check } from "lucide-react" ;
@@ -24,22 +23,12 @@ interface CardProps {
2423}
2524
2625const Card = ( { paper, onSelect, isSelected } : CardProps ) => {
27- const [ checked , setChecked ] = useState < boolean > ( isSelected ) ;
28-
29- useEffect ( ( ) => {
30- setChecked ( isSelected ) ;
31- } , [ isSelected ] ) ;
32-
3326 const handleDownload = async ( paper : IPaper ) => {
3427 await downloadFile ( getSecureUrl ( paper . file_url ) , generateFileName ( paper ) ) ;
3528 } ;
3629
3730 const handleCheckboxChange = ( ) => {
38- setChecked ( ( prev ) => {
39- const newChecked = ! prev ;
40- onSelect ( paper , newChecked ) ;
41- return newChecked ;
42- } ) ;
31+ onSelect ( paper , ! isSelected ) ;
4332 } ;
4433
4534 const paperLink = `/paper/${ paper . _id } ` ;
@@ -48,7 +37,7 @@ const Card = ({ paper, onSelect, isSelected }: CardProps) => {
4837 < div
4938 className = { cn (
5039 "overflow-hidden rounded-sm border-2 border-[#734DFF] bg-[#FFFFFF] font-play transition-all duration-150 hover:bg-[#EFEAFF] dark:border-[#36266D] dark:bg-[#171720] hover:dark:bg-[#262635]" ,
51- checked && "bg-white" ,
40+ isSelected && "bg-white" ,
5241 ) }
5342 >
5443 < Link href = { paperLink } target = "_blank" rel = "noopener noreferrer" >
@@ -100,7 +89,7 @@ const Card = ({ paper, onSelect, isSelected }: CardProps) => {
10089 < div className = "flex items-center justify-between gap-2 px-4 pb-4 font-play" >
10190 < div className = "flex items-center gap-2" >
10291 < input
103- checked = { checked }
92+ checked = { isSelected }
10493 onChange = { handleCheckboxChange }
10594 className = "h-5 w-5 accent-[#7480FF]"
10695 type = "checkbox"
0 commit comments