2
0
Эх сурвалжийг харах

utils: handle userAgentData browser compatibility (#210)

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 2 сар өмнө
parent
commit
99293abe2c
1 өөрчлөгдсөн 9 нэмэгдсэн , 3 устгасан
  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 {
 function getPlatform(): string {
   if (typeof window !== 'undefined' && window.navigator) {
   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') {
   } else if (typeof process !== 'undefined') {
     return `${process.arch} ${process.platform} Node.js/${process.version}`
     return `${process.arch} ${process.platform} Node.js/${process.version}`
   }
   }