From d403e704f69d9ec3d05018adf475e980110a6c50 Mon Sep 17 00:00:00 2001 From: nick-delirium Date: Fri, 12 Jan 2024 09:59:16 +0100 Subject: [PATCH] fix(tracker): fix blob generation --- tracker/tracker/src/main/app/canvas.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tracker/tracker/src/main/app/canvas.ts b/tracker/tracker/src/main/app/canvas.ts index fa54c6772..3633e4852 100644 --- a/tracker/tracker/src/main/app/canvas.ts +++ b/tracker/tracker/src/main/app/canvas.ts @@ -80,8 +80,9 @@ class CanvasRecorder { } const formData = new FormData() images.forEach((snapshot) => { - const blob = dataUrlToBlob(snapshot.data)[0] - formData.append('snapshot', blob, `${createdAt}_${canvasId}_${snapshot.id}.jpeg`) + const blob = dataUrlToBlob(snapshot.data) + if (!blob) return + formData.append('snapshot', blob[0], `${createdAt}_${canvasId}_${snapshot.id}.jpeg`) if (this.options.isDebug) { saveImageData(snapshot.data, `${createdAt}_${canvasId}_${snapshot.id}.jpeg`) } @@ -119,10 +120,11 @@ function captureSnapshot(canvas: HTMLCanvasElement, quality: 'low' | 'medium' | return canvas.toDataURL(imageFormat, qualityInt[quality]) } -function dataUrlToBlob(dataUrl: string): [Blob, Uint8Array] { +function dataUrlToBlob(dataUrl: string): [Blob, Uint8Array] | null { const [header, base64] = dataUrl.split(',') - // @ts-ignore - const mime = header.match(/:(.*?);/)[1] + const encParts = header.match(/:(.*?);/) + if (!encParts) return null + const mime = encParts[1] const blobStr = atob(base64) let n = blobStr.length const u8arr = new Uint8Array(n)