From 5ac87292c4810d816f16b1d2dd6a0dac643812e5 Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Fri, 15 Aug 2014 14:06:48 +0100 Subject: [PATCH] Remove old polling stuff from RoomController. Added service comments. Do not start the event stream on startup unless you have credentials. --- webclient/app-controller.js | 4 +- .../components/matrix/event-stream-service.js | 9 +++-- webclient/components/matrix/matrix-service.js | 12 ++++++ webclient/room/room-controller.js | 40 ------------------- 4 files changed, 20 insertions(+), 45 deletions(-) diff --git a/webclient/app-controller.js b/webclient/app-controller.js index 7f5f93ef7..7fa87e30c 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 97018df88..9f678e845 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 0a2d8005b..0cc85db28 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 49c73ff4b..0d54c6f4d 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; - }); }]);