Răsfoiți Sursa

Merge pull request #2079 from snnd/bugfix_reloads

fix(core): prevent endless reload on cache requests
Audrius Butkevicius 10 ani în urmă
părinte
comite
42dc51784e
1 a modificat fișierele cu 20 adăugiri și 7 ștergeri
  1. 20 7
      gui/scripts/syncthing/app.js

+ 20 - 7
gui/scripts/syncthing/app.js

@@ -15,27 +15,40 @@ var syncthing = angular.module('syncthing', [
 ]);
 
 var urlbase = 'rest';
-var guiVersion = null;
-var deviceId = null;
 
 syncthing.config(function ($httpProvider, $translateProvider, LocaleServiceProvider) {
-    $httpProvider.interceptors.push(function () {
+    $httpProvider.interceptors.push(function xHeadersResponseInterceptor() {
+        var guiVersion = null;
+        var deviceId = null;
+        
         return {
-            response: function (response) {
-                var responseVersion = response.headers()['x-syncthing-version'];
+            response: function onResponse(response) {
+                var headers = response.headers();
+                var responseVersion;
+                var deviceIdShort;
+                
+                // angular template cache sends no headers
+                if(Object.keys(headers).length === 0) {
+                    return response;
+                }
+                
+                responseVersion = headers['x-syncthing-version'];
+                
                 if (!guiVersion) {
                     guiVersion = responseVersion;
                 } else if (guiVersion != responseVersion) {
                     document.location.reload(true);
                 }
+                
                 if (!deviceId) {
-                    deviceId = response.headers()['x-syncthing-id'];
+                    deviceId = headers['x-syncthing-id'];
                     if (deviceId) {
-                        var deviceIdShort = deviceId.substring(0, 5);
+                        deviceIdShort = deviceId.substring(0, 5);
                         $httpProvider.defaults.xsrfHeaderName = 'X-CSRF-Token-' + deviceIdShort;
                         $httpProvider.defaults.xsrfCookieName = 'CSRF-Token-' + deviceIdShort;
                     }
                 }
+                
                 return response;
             }
         };