From d72e645049e0df69ffeb7274cea586d6f482f4e1 Mon Sep 17 00:00:00 2001 From: Georges-Antoine Assi Date: Sat, 16 May 2026 19:17:38 -0400 Subject: [PATCH] use bowser --- frontend/package-lock.json | 7 +++++++ frontend/package.json | 1 + frontend/src/services/api/rom.ts | 16 ++++------------ 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index cde305357..f7acf685b 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -12,6 +12,7 @@ "@mdi/font": "7.4.47", "@vueuse/core": "^13.7.0", "axios": "^1.16.0", + "bowser": "^2.14.1", "cronstrue": "^2.57.0", "date-fns": "^4.1.0", "js-cookie": "^3.0.5", @@ -4772,6 +4773,12 @@ "dev": true, "license": "ISC" }, + "node_modules/bowser": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", + "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", + "license": "MIT" + }, "node_modules/brace-expansion": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", diff --git a/frontend/package.json b/frontend/package.json index 282aac8d4..07a492ec2 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -31,6 +31,7 @@ "@mdi/font": "7.4.47", "@vueuse/core": "^13.7.0", "axios": "^1.16.0", + "bowser": "^2.14.1", "cronstrue": "^2.57.0", "date-fns": "^4.1.0", "js-cookie": "^3.0.5", diff --git a/frontend/src/services/api/rom.ts b/frontend/src/services/api/rom.ts index f1ccd929d..3b28eeced 100644 --- a/frontend/src/services/api/rom.ts +++ b/frontend/src/services/api/rom.ts @@ -1,4 +1,5 @@ import type { AxiosProgressEvent } from "axios"; +import Bowser from "bowser"; import type { Body_delete_roms_api_roms_delete_post as DeleteRomsInput, Body_update_rom_api_roms__id__put as UpdateRomInput, @@ -27,18 +28,10 @@ type SearchRom = SearchRomSchema; const DOWNLOAD_CLEANUP_DELAY = 100; const UPLOAD_CHUNK_SIZE = 10 * 1024 * 1024; // 10MB per chunk const MAX_CHUNK_RETRIES = 3; -const WEBKIT_USER_AGENT_RE = /AppleWebKit/i; -const CHROMIUM_BROWSER_RE = /Chrome|Chromium|CriOS|Edg|OPR/i; -function shouldTrackChunkUploadProgress(): boolean { - if (typeof navigator === "undefined") return true; - - const userAgent = navigator.userAgent; - return !( - WEBKIT_USER_AGENT_RE.test(userAgent) && - !CHROMIUM_BROWSER_RE.test(userAgent) - ); -} +const browser = Bowser.getParser(window.navigator.userAgent); +const engineName = browser.getEngineName(); +const trackChunkUploadProgress = engineName !== "WebKit"; async function uploadRomChunked({ platformId, @@ -49,7 +42,6 @@ async function uploadRomChunked({ }): Promise { const uploadStore = storeUpload(); const totalChunks = Math.ceil(file.size / UPLOAD_CHUNK_SIZE); - const trackChunkUploadProgress = shouldTrackChunkUploadProgress(); const { data: startData } = await api.post("/roms/upload/start", null, { headers: {