Explorar el Código

utils: handle userAgentData browser compatibility

Use runtime checks and minimal type assertion to safely handle the
userAgentData API which is not yet widely supported across browsers.
This maintains TypeScript type safety while ensuring the platform
detection works in both modern and legacy browsers.
Bruce MacDonald hace 5 meses
padre
commit
4fc1ccc268
Se han modificado 1 ficheros con 9 adiciones y 3 borrados
  1. 9 3
      src/utils.ts

+ 9 - 3
src/utils.ts

@@ -93,9 +93,15 @@ const checkOk = async (response: Response): Promise<void> => {
  */
 function getPlatform(): string {
   if (typeof window !== 'undefined' && window.navigator) {
-const platform = 
-      window.navigator.platform || window.navigator.userAgentData?.platform || 'unknown'
-    return `${platform.toLowerCase()} Browser/${navigator.userAgent};`
+    // Need type assertion here since TypeScript doesn't know about userAgentData
+    const nav = navigator as any
+    if ('userAgentData' in nav && nav.userAgentData?.platform) {
+      return `${nav.userAgentData.platform.toLowerCase()} Browser/${navigator.userAgent};`
+    }
+    if (navigator.platform) {
+      return `${navigator.platform.toLowerCase()} Browser/${navigator.userAgent};`
+    }
+    return `unknown Browser/${navigator.userAgent};`
   } else if (typeof process !== 'undefined') {
     return `${process.arch} ${process.platform} Node.js/${process.version}`
   }