From b5273e00ef5871def7c6616f0a037d43f2874dca Mon Sep 17 00:00:00 2001 From: judymoody59 Date: Wed, 18 Jun 2025 11:43:05 +0900 Subject: [PATCH 1/2] =?UTF-8?q?KW-695/fix:=20QR=20=EC=9D=B8=EC=8B=9D=20?= =?UTF-8?q?=ED=9B=84=20=EC=BF=A8=ED=83=80=EC=9E=84,=20=EB=A9=94=EC=84=B8?= =?UTF-8?q?=EC=A7=80=20=ED=91=9C=EC=8B=9C=ED=83=80=EC=9E=84=EC=9D=84=201.5?= =?UTF-8?q?=EC=B4=88=EB=A1=9C=20=ED=86=B5=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/QRCodeScanner.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/QRCodeScanner.tsx b/src/pages/QRCodeScanner.tsx index bbc4021..f766639 100644 --- a/src/pages/QRCodeScanner.tsx +++ b/src/pages/QRCodeScanner.tsx @@ -50,7 +50,7 @@ const QRCodeScanner = () => { setTimeout(() => { setShowPopup(false); setIsScanning(false); - }, 5000); + }, 1500); }; useEffect(() => { @@ -111,14 +111,14 @@ const QRCodeScanner = () => { (decodedText: string) => { if (isScanningRef.current) return; - isScanningRef.current = true; // 10초간 QR 인식 일시차단 + isScanningRef.current = true; // 1.5초간 QR 인식 일시차단 console.log("QR 인식됨:", decodedText); setIsScanning(true); setTimeout(() => { - isScanningRef.current = false; // 10초 후 해제 + isScanningRef.current = false; // 1.5초 후 해제 setIsScanning(false); - }, 10000); + }, 1500); let parsed: Record | string = decodedText; From 7420670b4b6ba346f064ee6e87f7e1255f1b323b Mon Sep 17 00:00:00 2001 From: judymoody59 Date: Wed, 18 Jun 2025 12:18:19 +0900 Subject: [PATCH 2/2] =?UTF-8?q?KW-695/fix:=20verifyQR=20=EC=9D=91=EB=8B=B5?= =?UTF-8?q?=20=EC=A7=80=EC=97=B0=20=EB=B0=A9=EC=A7=80=EB=A5=BC=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20=ED=83=80=EC=9E=84=EC=95=84=EC=9B=83=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/QRCodeScanner.tsx | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/pages/QRCodeScanner.tsx b/src/pages/QRCodeScanner.tsx index f766639..103f027 100644 --- a/src/pages/QRCodeScanner.tsx +++ b/src/pages/QRCodeScanner.tsx @@ -64,6 +64,15 @@ const QRCodeScanner = () => { false ); + const verifyWithTimeout = (payload: any, timeoutMs = 2000) => { // 타임아웃 2초 + return Promise.race([ + verifyQR(payload), + new Promise((_, reject) => + setTimeout(() => reject(new Error("timeout")), timeoutMs) + ) + ]); + }; + const handleScan = async (parsed: any) => { const deviceAreaCode = localStorage.getItem("deviceAreaCode") || ""; const deviceAreaId = localStorage.getItem("deviceAreaId"); @@ -85,7 +94,7 @@ const QRCodeScanner = () => { console.log("출입 verify 요청 payload:", payload); - const result = await verifyQR(payload); + const result = await verifyWithTimeout(payload); console.log("출입 검증 result:", result?.success); if (result?.success) { @@ -93,8 +102,12 @@ const QRCodeScanner = () => { } else { showMessage(STATUS_MESSAGES.ACCESS_DENIED); } - } catch (err: unknown) { - console.error("출입 데이터 전송 실패", err); + } catch (err: any) { + if (err.message === "timeout") { + console.error("출입 검증 응답 지연으로 타임아웃 발생"); + } else { + console.error("출입 데이터 전송 실패", err); + } showMessage(STATUS_MESSAGES.VERIFY_FAILED); } } else {