From 9e79be16976aa5028e6ac513be519a27490bb0cb Mon Sep 17 00:00:00 2001 From: Lukas <69743171+quick007@users.noreply.github.com> Date: Sat, 27 Jan 2024 21:01:21 -0800 Subject: [PATCH] Scanning transition improvements Co-Authored-By: Bloxs <51055767+Blocksnmore@users.noreply.github.com> --- islands/events/scanning.tsx | 42 ++++++++++++++++++++------------- routes/events/[id]/scanning.tsx | 1 - 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/islands/events/scanning.tsx b/islands/events/scanning.tsx index 4a38052..85d90eb 100644 --- a/islands/events/scanning.tsx +++ b/islands/events/scanning.tsx @@ -7,13 +7,7 @@ import { useSignal } from "@preact/signals"; import Dropdown from "../components/pickers/dropdown.tsx"; import CameraRotate from "$tabler/camera-rotate.tsx"; -export default function Scanner({ - className, - eventID, -}: { - className?: string; - eventID: string; -}) { +export default function Scanner({ eventID }: { eventID: string }) { const error = useSignal(null); const isInitialized = useSignal(false); const currentTicket = useSignal< @@ -27,6 +21,7 @@ export default function Scanner({ >(null); const cameraIds = useSignal([]); const currentCamera = useSignal(""); + const isCameraSwitching = useSignal(false); useEffect(() => { (async () => { @@ -93,6 +88,7 @@ export default function Scanner({ video.onloadedmetadata = () => { video.play(); + isCameraSwitching.value = false; canvas.width = video.videoWidth; canvas.height = video.videoHeight; @@ -121,6 +117,8 @@ export default function Scanner({ }, 5 * 1000); const switchCamera = async (deviceId: string) => { + isCameraSwitching.value = true; + const devices = await navigator.mediaDevices.getUserMedia({ video: { facingMode: "environment", @@ -128,10 +126,6 @@ export default function Scanner({ }, }); - ctx.filter = "blur(30px)"; - - ctx.drawImage(video, 0, 0, canvas.width, canvas.height); - currentCameraBeingRendered = deviceId; video.srcObject = devices; @@ -282,7 +276,6 @@ export default function Scanner({ } ctx.drawImage(video, 0, 0, canvas.width, canvas.height); - ctx.filter = ""; lookForBarcodes(); @@ -311,15 +304,30 @@ export default function Scanner({ height={1080} /> {error.value} -
- +
+ {/* Camera switching */}
{cameraIds.value.length === 1 || (true && ( - ))} diff --git a/routes/events/[id]/scanning.tsx b/routes/events/[id]/scanning.tsx index 32831d8..bc464b4 100644 --- a/routes/events/[id]/scanning.tsx +++ b/routes/events/[id]/scanning.tsx @@ -18,7 +18,6 @@ export default defineRoute((req, ctx: RouteContext) => {