Remove old polling stuff from RoomController. Added service comments. Do not start the event stream on startup unless you have credentials.

pull/4/merge
Kegan Dougal 10 years ago
parent 7ddb7a5cbb
commit 5ac87292c4
  1. 4
      webclient/app-controller.js
  2. 9
      webclient/components/matrix/event-stream-service.js
  3. 12
      webclient/components/matrix/matrix-service.js
  4. 40
      webclient/room/room-controller.js

@ -46,7 +46,9 @@ angular.module('MatrixWebClientController', ['matrixService'])
}
};
eventStreamService.resume();
if (matrixService.config()) {
eventStreamService.resume();
}
// Logs the user out
$scope.logout = function() {

@ -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;

@ -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);

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

Loading…
Cancel
Save