Просмотр исходного кода

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 5 месяцев назад
Родитель
Сommit
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 {
   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}`
   }