Przeglądaj źródła

BrowserService: Make version an integer

Danilo Bargen 7 lat temu
rodzic
commit
4e41c6160b

+ 2 - 2
src/partials/welcome.ts

@@ -111,9 +111,9 @@ class WelcomeController {
 
         // Determine whether browser warning should be shown
         const browser = browserService.getBrowser();
-        const version = parseFloat(browser.version);
+        const version = browser.version;
         $log.debug('Detected browser:', browser.textInfo);
-        if (isNaN(version)) {
+        if (version === undefined) {
             $log.warn('Could not determine browser version');
             this.showBrowserWarning();
         } else if (browser.chrome === true) {

+ 6 - 3
src/services/browser.ts

@@ -104,7 +104,6 @@ export class BrowserService {
             this.browser.safari  = /safari/.test(uagent)  && /applewebkit/.test(uagent) && !/chrome/.test(uagent);
             this.browser.opera   = /mozilla/.test(uagent) && /applewebkit/.test(uagent)
                 && /chrome/.test(uagent) && /safari/.test(uagent) && /opr/.test(uagent);
-            this.browser.version = '';
 
             if (this.browser.opera && this.browser.chrome) {
                 this.browser.chrome = false;
@@ -126,12 +125,16 @@ export class BrowserService {
                     }
                     let match = uagent.match(new RegExp('(' + b + ')( |\/)([0-9]+)'));
 
+                    let version;
                     if (match) {
-                        this.browser.version = match[3];
+                        version = match[3];
                     } else {
                         match = uagent.match(new RegExp('rv:([0-9]+)'));
-                        this.browser.version = match ? match[1] : '';
+                        version = match ? match[1] : '';
                     }
+                    const versionInt: number = parseInt(match[3], 10);
+                    this.browser.version = isNaN(versionInt) ? undefined : versionInt;
+
                     break;
                 }
             }

+ 1 - 1
src/services/webclient.ts

@@ -434,7 +434,7 @@ export class WebClientService {
             if (this.chosenTask === threema.ChosenTask.WebRTC) {
                 // Firefox <53 does not yet support TLS. Skip it, to save allocations.
                 const browser = this.browserService.getBrowser();
-                if (browser.firefox && parseFloat(browser.version) < 53) {
+                if (browser.firefox && browser.version && browser.version < 53) {
                     this.skipIceTls();
                 }
 

+ 1 - 1
src/threema.d.ts

@@ -423,7 +423,7 @@ declare namespace threema {
         opera: boolean;
         safari: boolean;
         name?: BrowserName;
-        version?: string;
+        version?: number;
         textInfo?: string;
     }
 

+ 8 - 8
tests/service/browser.js

@@ -25,7 +25,7 @@ describe('BrowserService', function() {
         expect(browser.opera).toBe(false);
         expect(browser.safari).toBe(false);
         expect(browser.name).toEqual('firefox');
-        expect(browser.version).toEqual('59');
+        expect(browser.version).toEqual(59);
         expect(browser.textInfo).toEqual('Firefox 59');
     });
 
@@ -40,7 +40,7 @@ describe('BrowserService', function() {
         expect(browser.opera).toBe(false);
         expect(browser.safari).toBe(false);
         expect(browser.name).toEqual('chrome');
-        expect(browser.version).toEqual('65');
+        expect(browser.version).toEqual(65);
         expect(browser.textInfo).toEqual('Chrome 65');
     });
 
@@ -55,7 +55,7 @@ describe('BrowserService', function() {
         expect(browser.opera).toBe(false);
         expect(browser.safari).toBe(false);
         expect(browser.name).toEqual('ie');
-        expect(browser.version).toEqual('9');
+        expect(browser.version).toEqual(9);
         expect(browser.textInfo).toEqual('Internet Explorer 9');
     });
 
@@ -70,7 +70,7 @@ describe('BrowserService', function() {
         expect(browser.opera).toBe(false);
         expect(browser.safari).toBe(false);
         expect(browser.name).toEqual('ie');
-        expect(browser.version).toEqual('11');
+        expect(browser.version).toEqual(11);
         expect(browser.textInfo).toEqual('Internet Explorer 11');
     });
 
@@ -85,7 +85,7 @@ describe('BrowserService', function() {
         expect(browser.opera).toBe(false);
         expect(browser.safari).toBe(false);
         expect(browser.name).toEqual('edge');
-        expect(browser.version).toEqual('12');
+        expect(browser.version).toEqual(12);
         expect(browser.textInfo).toEqual('Edge 12');
     });
 
@@ -100,7 +100,7 @@ describe('BrowserService', function() {
         expect(browser.opera).toBe(true);
         expect(browser.safari).toBe(false);
         expect(browser.name).toEqual('opera');
-        expect(browser.version).toEqual('51');
+        expect(browser.version).toEqual(51);
         expect(browser.textInfo).toEqual('Opera 51');
     });
 
@@ -115,7 +115,7 @@ describe('BrowserService', function() {
         expect(browser.opera).toBe(false);
         expect(browser.safari).toBe(true);
         expect(browser.name).toEqual('safari');
-        expect(browser.version).toEqual('7');
+        expect(browser.version).toEqual(7);
         expect(browser.textInfo).toEqual('Safari 7');
     });
 
@@ -130,7 +130,7 @@ describe('BrowserService', function() {
         expect(browser.opera).toBe(false);
         expect(browser.safari).toBe(true);
         expect(browser.name).toEqual('safari');
-        expect(browser.version).toEqual('11');
+        expect(browser.version).toEqual(11);
         expect(browser.textInfo).toEqual('Safari 11');
     });