From a81e655d51e3c403f75bbd8306ac342867ebe5a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Koray=20=C3=96zturkler?= Date: Fri, 13 Feb 2026 13:37:45 -0500 Subject: [PATCH] Add auto-copy to clipboard on scan --- src/pages/RFIDReader.tsx | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/src/pages/RFIDReader.tsx b/src/pages/RFIDReader.tsx index fd96133..99f60af 100644 --- a/src/pages/RFIDReader.tsx +++ b/src/pages/RFIDReader.tsx @@ -7,7 +7,8 @@ import { rfidService } from "@/services/rfid.service"; import type { Team } from "@/types/team"; import type { Participant } from "@/types/user"; import { useAtomValue } from "jotai"; -import { useEffect, useRef, useState } from "react"; +import { Check, Clipboard } from "lucide-react"; +import { useCallback, useEffect, useRef, useState } from "react"; import { useNavigate } from "react-router-dom"; export default function RFIDReader() { @@ -32,6 +33,13 @@ export default function RFIDReader() { const [showActivityAssignedToast, setShowActivityAssignedToast] = useState< "hidden" | "success" | "alreadyAttended" >("hidden"); + const [copied, setCopied] = useState(false); + + const copyToClipboard = useCallback((text: string) => { + navigator.clipboard.writeText(text); + setCopied(true); + setTimeout(() => setCopied(false), 1500); + }, []); useEffect(() => { if (!rfidService.isSupported()) { @@ -66,6 +74,8 @@ export default function RFIDReader() { setShowActivityAssignedToast("hidden"); setRfidData(uuid); + copyToClipboard(uuid); + setRfidParticipant(undefined); setTeam(null); @@ -162,8 +172,8 @@ export default function RFIDReader() {

Choose whether the user should receive attendance for an - activity when they tap their card. No need to use this for - check-in. + activity when they tap their card. + No need to use this for check-in.
* means this activity is not eligible for the raffle.

@@ -208,9 +218,25 @@ export default function RFIDReader() { {rfidData && ( <>

The card has the following ID:

-

- {rfidData} -

+ )} {rfidParticipant ? (