Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 20 additions & 7 deletions src/pages/QRCodeScanner.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ const QRCodeScanner = () => {
setTimeout(() => {
setShowPopup(false);
setIsScanning(false);
}, 5000);
}, 1500);
};

useEffect(() => {
Expand All @@ -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");
Expand All @@ -85,16 +94,20 @@ 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) {
showMessage(STATUS_MESSAGES.ACCESS_GRANTED);
} 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 {
Expand All @@ -111,14 +124,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, any> | string = decodedText;

Expand Down