summary refs log tree commit diff
path: root/webclient
diff options
context:
space:
mode:
authorKegan Dougal <kegan@matrix.org>2014-08-15 14:06:48 +0100
committerKegan Dougal <kegan@matrix.org>2014-08-15 14:06:56 +0100
commit5ac87292c4810d816f16b1d2dd6a0dac643812e5 (patch)
treec858636626c9cd17407a7d4e103a8c487cd6f9c6 /webclient
parentEvent streaming now happens on an app level, rather than a per-room level. Ma... (diff)
downloadsynapse-5ac87292c4810d816f16b1d2dd6a0dac643812e5.tar.xz
Remove old polling stuff from RoomController. Added service comments. Do not start the event stream on startup unless you have credentials.
Diffstat (limited to 'webclient')
-rw-r--r--webclient/app-controller.js4
-rw-r--r--webclient/components/matrix/event-stream-service.js9
-rw-r--r--webclient/components/matrix/matrix-service.js12
-rw-r--r--webclient/room/room-controller.js40
4 files changed, 20 insertions, 45 deletions
diff --git a/webclient/app-controller.js b/webclient/app-controller.js
index 7f5f93ef72..7fa87e30c1 100644
--- a/webclient/app-controller.js
+++ b/webclient/app-controller.js
@@ -46,7 +46,9 @@ angular.module('MatrixWebClientController', ['matrixService'])
         }
     };
 
-    eventStreamService.resume();
+    if (matrixService.config()) {
+        eventStreamService.resume();
+    }
     
     // Logs the user out 
     $scope.logout = function() {
diff --git a/webclient/components/matrix/event-stream-service.js b/webclient/components/matrix/event-stream-service.js
index 97018df881..9f678e8454 100644
--- a/webclient/components/matrix/event-stream-service.js
+++ b/webclient/components/matrix/event-stream-service.js
@@ -17,9 +17,10 @@ limitations under the License.
 'use strict';
 
 /*
-This service manages where in the event stream the web client currently is and 
-provides methods to resume/pause/stop the event stream. This service is not
-responsible for parsing event data. For that, see the eventHandlerService.
+This service manages where in the event stream the web client currently is,
+repolling the event stream, and provides methods to resume/pause/stop the event 
+stream. This service is not responsible for parsing event data. For that, see 
+the eventHandlerService.
 */
 angular.module('eventStreamService', [])
 .factory('eventStreamService', ['$q', '$timeout', 'matrixService', 'eventHandlerService', function($q, $timeout, matrixService, eventHandlerService) {
@@ -39,7 +40,7 @@ angular.module('eventStreamService', [])
     // interrupts the stream. Only valid if there is a stream conneciton 
     // open.
     var interrupt = function(shouldPoll) {
-        console.log("p[EventStream] interrupt("+shouldPoll+") "+
+        console.log("[EventStream] interrupt("+shouldPoll+") "+
                     JSON.stringify(settings));
         settings.shouldPoll = shouldPoll;
         settings.isActive = false;
diff --git a/webclient/components/matrix/matrix-service.js b/webclient/components/matrix/matrix-service.js
index 0a2d8005b6..0cc85db28e 100644
--- a/webclient/components/matrix/matrix-service.js
+++ b/webclient/components/matrix/matrix-service.js
@@ -16,6 +16,12 @@ limitations under the License.
 
 'use strict';
 
+/*
+This service wraps up Matrix API calls. 
+
+This serves to isolate the caller from changes to the underlying url paths, as
+well as attach common params (e.g. access_token) to requests.
+*/
 angular.module('matrixService', [])
 .factory('matrixService', ['$http', '$q', '$rootScope', function($http, $q, $rootScope) {
         
@@ -36,10 +42,16 @@ angular.module('matrixService', [])
     var MAPPING_PREFIX = "alias_for_";
 
     var doRequest = function(method, path, params, data) {
+        if (!config) {
+            console.warn("No config exists. Cannot perform request to "+path);
+            return;
+        }
+    
         // Inject the access token
         if (!params) {
             params = {};
         }
+        
         params.access_token = config.access_token;
         
         return doBaseRequest(config.homeserver, method, path, params, data, undefined);
diff --git a/webclient/room/room-controller.js b/webclient/room/room-controller.js
index 49c73ff4bb..0d54c6f4d8 100644
--- a/webclient/room/room-controller.js
+++ b/webclient/room/room-controller.js
@@ -29,7 +29,6 @@ angular.module('RoomController', [])
         stream_failure: undefined // the response when the stream fails
     };
     $scope.members = {};
-    $scope.stopPoll = false;
 
     $scope.imageURLToSend = "";
     $scope.userIDToInvite = "";
@@ -71,40 +70,6 @@ angular.module('RoomController', [])
         )
     };
 
-    var shortPoll = function() {
-        eventStreamService.resume().then(
-            function(response) {
-                $scope.state.stream_failure = undefined;
-                console.log("Got response from "+$scope.state.events_from+" to "+response.data.end);
-                $scope.state.events_from = response.data.end;
-                $scope.feedback = "";
-                
-                eventHandlerService.handleEvents(response.data.chunk, true);
-                
-                if ($scope.stopPoll) {
-                    console.log("Stopping polling.");
-                }
-                else {
-                    $timeout(shortPoll, 0);
-                }
-            }, 
-            function(error) {
-                $scope.state.stream_failure = error;
-
-                if (error.status == 403) {
-                    $scope.stopPoll = true;
-                }
-                
-                if ($scope.stopPoll) {
-                    console.log("Stopping polling.");
-                }
-                else {
-                    $timeout(shortPoll, 5000);
-                }
-            }
-        );
-    };
-
     var updateMemberList = function(chunk) {
         var isNewMember = !(chunk.target_user_id in $scope.members);
         if (isNewMember) {
@@ -260,9 +225,4 @@ angular.module('RoomController', [])
     $scope.loadMoreHistory = function() {
         paginate(MESSAGES_PER_PAGINATION);
     };
-
-    $scope.$on('$destroy', function(e) {
-        console.log("onDestroyed: Stopping poll.");
-        $scope.stopPoll = true;
-    });
 }]);