mirror of
https://github.com/mudabbir-ahmad/peworkshop.git
synced 2026-10-07 19:50:20 +00:00
added more clue buttons and positioned them correctly, need to fix elapsed timer on clue page....
Error handling with clues improved.
This commit is contained in:
1 parent
8a06fd4966
commit
4fa0419ba9
2 files changed
+16
-11
No files matched your search
Binary file not shown.
@@ -50,7 +50,7 @@ export default function EnhancedQRScanner({
|
||||
try {
|
||||
// Release any stream that might be stored in our ref
|
||||
if (cameraStreamRef.current) {
|
||||
cameraStreamRef.current.getTracks().forEach(track => {
|
||||
cameraStreamRef.current.getTracks().forEach((track) => {
|
||||
track.stop();
|
||||
});
|
||||
cameraStreamRef.current = null;
|
||||
@@ -58,7 +58,8 @@ export default function EnhancedQRScanner({
|
||||
}
|
||||
|
||||
// Also try to find and release any active video tracks that might be running
|
||||
navigator.mediaDevices.getUserMedia({ audio: false, video: false })
|
||||
navigator.mediaDevices
|
||||
.getUserMedia({ audio: false, video: false })
|
||||
.catch(() => {
|
||||
// This intentionally fails but helps release resources in some browsers
|
||||
});
|
||||
@@ -185,7 +186,7 @@ export default function EnhancedQRScanner({
|
||||
releaseCameraResources();
|
||||
|
||||
// Add a small delay to ensure resources are properly released
|
||||
await new Promise(resolve => setTimeout(resolve, 500));
|
||||
await new Promise((resolve) => setTimeout(resolve, 500));
|
||||
|
||||
// Now try to get fresh camera access
|
||||
const stream = await navigator.mediaDevices.getUserMedia({
|
||||
@@ -209,7 +210,7 @@ export default function EnhancedQRScanner({
|
||||
console.error("Failed to get camera permission:", err);
|
||||
|
||||
// Increment retry count
|
||||
setRetryCount(prev => prev + 1);
|
||||
setRetryCount((prev) => prev + 1);
|
||||
|
||||
if (
|
||||
err.name === "NotAllowedError" ||
|
||||
@@ -224,9 +225,13 @@ export default function EnhancedQRScanner({
|
||||
err.name === "TrackStartError" ||
|
||||
retryCount < 2 // Try a few times before showing hardware error
|
||||
) {
|
||||
setError(`Camera temporarily unavailable. Please try again in a few moments.`);
|
||||
setError(
|
||||
`Camera temporarily unavailable. Please try again in a few moments.`
|
||||
);
|
||||
} else {
|
||||
setError(`Camera error: ${err.message}. You may need to restart your browser or device.`);
|
||||
setError(
|
||||
`Camera error: ${err.message}. You may need to restart your browser or device.`
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -245,7 +250,10 @@ export default function EnhancedQRScanner({
|
||||
|
||||
// Don't immediately deactivate camera on all errors
|
||||
// Some errors can be temporary
|
||||
if (error.name === "NotAllowedError" || error.name === "PermissionDeniedError") {
|
||||
if (
|
||||
error.name === "NotAllowedError" ||
|
||||
error.name === "PermissionDeniedError"
|
||||
) {
|
||||
setCameraActive(false);
|
||||
}
|
||||
|
||||
@@ -327,10 +335,7 @@ export default function EnhancedQRScanner({
|
||||
</button>
|
||||
</div>
|
||||
) : (
|
||||
<button
|
||||
className="retry-button"
|
||||
onClick={requestCameraAccess}
|
||||
>
|
||||
<button className="retry-button" onClick={requestCameraAccess}>
|
||||
Retry Camera Access
|
||||
</button>
|
||||
)}
|
||||
|
||||
Reference in new issue
Block a user