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;
- });
}]);
|