diff options
author | Kegan Dougal <kegan@matrix.org> | 2014-08-15 10:20:14 +0100 |
---|---|---|
committer | Kegan Dougal <kegan@matrix.org> | 2014-08-15 14:06:56 +0100 |
commit | 8bf3994c2e4726278355bc1398c4b9c94d242ad0 (patch) | |
tree | dce0066c2e6aec0e3657606468df16a439c450f8 /webclient/components | |
parent | Add a check to make sure that during state conflict res we only request a PDU... (diff) | |
download | synapse-8bf3994c2e4726278355bc1398c4b9c94d242ad0.tar.xz |
Added event stream service which neatly blobs together requests / state for the event stream. This depends on matrix service to do the actual hit. Currently this has exactly the same behaviour as before.
Diffstat (limited to 'webclient/components')
-rw-r--r-- | webclient/components/matrix/event-stream-service.js | 69 | ||||
-rw-r--r-- | webclient/components/matrix/matrix-service.js | 9 |
2 files changed, 78 insertions, 0 deletions
diff --git a/webclient/components/matrix/event-stream-service.js b/webclient/components/matrix/event-stream-service.js new file mode 100644 index 0000000000..0a3a12192b --- /dev/null +++ b/webclient/components/matrix/event-stream-service.js @@ -0,0 +1,69 @@ +/* +Copyright 2014 matrix.org + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +'use strict'; + +angular.module('eventStreamService', []) +.factory('eventStreamService', ['matrixService', function(matrixService) { + var settings = { + from: "END", + to: undefined, + limit: undefined, + shouldPoll: true + }; + + // interrupts the stream. Only valid if there is a stream conneciton + // open. + var interrupt = function(shouldPoll) { + console.log("[EventStream] interrupt("+shouldPoll+") "+ + JSON.stringify(settings)); + }; + + var saveStreamSettings = function() { + localStorage.setItem("streamSettings", JSON.stringify(settings)); + }; + + return { + // resume the stream from whereever it last got up to. Typically used + // when the page is opened. + resume: function() { + console.log("[EventStream] resume "+JSON.stringify(settings)); + // run the stream from the latest token + return matrixService.getEventStream(settings.from, 5000); + }, + + // pause the stream. Resuming it will continue from the current position + pause: function() { + console.log("[EventStream] pause "+JSON.stringify(settings)); + // kill any running stream + interrupt(false); + // save the latest token + saveStreamSettings(); + }, + + // stop the stream and wipe the position in the stream. Typically used + // when logging out. + stop: function() { + console.log("[EventStream] stop "+JSON.stringify(settings)); + // kill any running stream + interrupt(false); + // clear the latest token + settings.from = "END"; + saveStreamSettings(); + } + }; + +}]); diff --git a/webclient/components/matrix/matrix-service.js b/webclient/components/matrix/matrix-service.js index 6d66111469..0a2d8005b6 100644 --- a/webclient/components/matrix/matrix-service.js +++ b/webclient/components/matrix/matrix-service.js @@ -297,6 +297,15 @@ angular.module('matrixService', []) return doBaseRequest(config.identityServer, "POST", path, {}, data, headers); }, + // start listening on /events + getEventStream: function(from, timeout) { + var path = "/events"; + var params = { + from: from, + timeout: timeout + }; + return doRequest("GET", path, params); + }, // testLogin: function() { |