diff options
Diffstat (limited to 'webclient/components')
-rw-r--r-- | webclient/components/fileUpload/file-upload-service.js | 2 | ||||
-rw-r--r-- | webclient/components/matrix/matrix-call.js | 35 | ||||
-rw-r--r-- | webclient/components/matrix/matrix-service.js | 26 | ||||
-rw-r--r-- | webclient/components/matrix/presence-service.js | 14 |
4 files changed, 41 insertions, 36 deletions
diff --git a/webclient/components/fileUpload/file-upload-service.js b/webclient/components/fileUpload/file-upload-service.js index 5f01478fd1..699a3cbffc 100644 --- a/webclient/components/fileUpload/file-upload-service.js +++ b/webclient/components/fileUpload/file-upload-service.js @@ -30,7 +30,7 @@ angular.module('mFileUpload', ['matrixService', 'mUtilities']) */ this.uploadFile = function(file) { var deferred = $q.defer(); - console.log("Uploading " + file.name + "... to /matrix/content"); + console.log("Uploading " + file.name + "... to /_matrix/content"); matrixService.uploadContent(file).then( function(response) { var content_url = response.data.content_token; diff --git a/webclient/components/matrix/matrix-call.js b/webclient/components/matrix/matrix-call.js index 45d00ee792..47b63d7f2f 100644 --- a/webclient/components/matrix/matrix-call.js +++ b/webclient/components/matrix/matrix-call.js @@ -36,7 +36,7 @@ var forAllTracksOnStream = function(s, f) { } angular.module('MatrixCall', []) -.factory('MatrixCall', ['matrixService', 'matrixPhoneService', function MatrixCallFactory(matrixService, matrixPhoneService) { +.factory('MatrixCall', ['matrixService', 'matrixPhoneService', '$rootScope', function MatrixCallFactory(matrixService, matrixPhoneService, $rootScope) { var MatrixCall = function(room_id) { this.room_id = room_id; this.call_id = "c" + new Date().getTime(); @@ -73,9 +73,7 @@ angular.module('MatrixCall', []) this.state = 'wait_local_media'; }; - MatrixCall.prototype.hangup = function() { - console.trace("Ending call "+this.call_id); - + MatrixCall.prototype.stopAllMedia = function() { if (this.localAVStream) { forAllTracksOnStream(this.localAVStream, function(t) { t.stop(); @@ -86,6 +84,12 @@ angular.module('MatrixCall', []) t.stop(); }); } + }; + + MatrixCall.prototype.hangup = function() { + console.trace("Ending call "+this.call_id); + + this.stopAllMedia(); var content = { version: 0, @@ -204,6 +208,7 @@ angular.module('MatrixCall', []) // ideally we'd consider the call to be connected when we get media but chrome doesn't implement nay of the 'onstarted' events yet if (this.peerConn.iceConnectionState == 'completed' || this.peerConn.iceConnectionState == 'connected') { this.state = 'connected'; + $rootScope.$apply(); } }; @@ -232,8 +237,9 @@ angular.module('MatrixCall', []) t.onstarted = self.onRemoteStreamTrackStarted; }); + event.stream.onended = function(e) { self.onRemoteStreamEnded(e); }; // not currently implemented in chrome - event.stream.onstarted = this.onRemoteStreamStarted; + event.stream.onstarted = function(e) { self.onRemoteStreamStarted(e); }; var player = new Audio(); player.src = URL.createObjectURL(s); player.play(); @@ -243,24 +249,19 @@ angular.module('MatrixCall', []) this.state = 'connected'; }; + MatrixCall.prototype.onRemoteStreamEnded = function(event) { + this.state = 'ended'; + this.stopAllMedia(); + this.onHangup(); + }; + MatrixCall.prototype.onRemoteStreamTrackStarted = function(event) { this.state = 'connected'; }; MatrixCall.prototype.onHangupReceived = function() { this.state = 'ended'; - - if (this.localAVStream) { - forAllTracksOnStream(this.localAVStream, function(t) { - t.stop(); - }); - } - if (this.remoteAVStream) { - forAllTracksOnStream(this.remoteAVStream, function(t) { - t.stop(); - }); - } - + this.stopAllMedia(); this.onHangup(); }; diff --git a/webclient/components/matrix/matrix-service.js b/webclient/components/matrix/matrix-service.js index 8543491dca..d509c20b0f 100644 --- a/webclient/components/matrix/matrix-service.js +++ b/webclient/components/matrix/matrix-service.js @@ -38,7 +38,7 @@ angular.module('matrixService', []) // Current version of permanent storage var configVersion = 0; - var prefixPath = "/matrix/client/api/v1"; + var prefixPath = "/_matrix/client/api/v1"; var MAPPING_PREFIX = "alias_for_"; var doRequest = function(method, path, params, data, $httpParams) { @@ -95,14 +95,18 @@ angular.module('matrixService', []) }, // Create a room - create: function(room_id, visibility) { + create: function(room_alias, visibility) { // The REST path spec var path = "/createRoom"; - return doRequest("POST", path, undefined, { - visibility: visibility, - room_alias_name: room_id - }); + var req = { + "visibility": visibility + }; + if (room_alias) { + req.room_alias_name = room_alias; + } + + return doRequest("POST", path, undefined, req); }, // List all rooms joined or been invited to @@ -164,7 +168,7 @@ angular.module('matrixService', []) // Retrieves the room ID corresponding to a room alias resolveRoomAlias:function(room_alias) { - var path = "/matrix/client/api/v1/directory/room/$room_alias"; + var path = "/_matrix/client/api/v1/directory/room/$room_alias"; room_alias = encodeURIComponent(room_alias); path = path.replace("$room_alias", room_alias); @@ -304,7 +308,7 @@ angular.module('matrixService', []) // hit the Identity Server for a 3PID request. linkEmail: function(email, clientSecret, sendAttempt) { - var path = "/matrix/identity/api/v1/validate/email/requestToken" + var path = "/_matrix/identity/api/v1/validate/email/requestToken" var data = "clientSecret="+clientSecret+"&email=" + encodeURIComponent(email)+"&sendAttempt="+sendAttempt; var headers = {}; headers["Content-Type"] = "application/x-www-form-urlencoded"; @@ -312,7 +316,7 @@ angular.module('matrixService', []) }, authEmail: function(clientSecret, tokenId, code) { - var path = "/matrix/identity/api/v1/validate/email/submitToken"; + var path = "/_matrix/identity/api/v1/validate/email/submitToken"; var data = "token="+code+"&sid="+tokenId+"&clientSecret="+clientSecret; var headers = {}; headers["Content-Type"] = "application/x-www-form-urlencoded"; @@ -320,7 +324,7 @@ angular.module('matrixService', []) }, bindEmail: function(userId, tokenId, clientSecret) { - var path = "/matrix/identity/api/v1/3pid/bind"; + var path = "/_matrix/identity/api/v1/3pid/bind"; var data = "mxid="+encodeURIComponent(userId)+"&sid="+tokenId+"&clientSecret="+clientSecret; var headers = {}; headers["Content-Type"] = "application/x-www-form-urlencoded"; @@ -328,7 +332,7 @@ angular.module('matrixService', []) }, uploadContent: function(file) { - var path = "/matrix/content"; + var path = "/_matrix/content"; var headers = { "Content-Type": undefined // undefined means angular will figure it out }; diff --git a/webclient/components/matrix/presence-service.js b/webclient/components/matrix/presence-service.js index 6a1edcaf43..555118133b 100644 --- a/webclient/components/matrix/presence-service.js +++ b/webclient/components/matrix/presence-service.js @@ -23,9 +23,9 @@ angular.module('mPresence', []) .service('mPresence', ['$timeout', 'matrixService', function ($timeout, matrixService) { - // Time in ms after that a user is considered as offline/away - var OFFLINE_TIME = 5 * 60000; // 5 mins - + // Time in ms after that a user is considered as unavailable/away + var UNAVAILABLE_TIME = 5 * 60000; // 5 mins + // The current presence state var state = undefined; @@ -88,11 +88,11 @@ angular.module('mPresence', []) }; /** - * Callback called when the user made no action on the page for OFFLINE_TIME ms. + * Callback called when the user made no action on the page for UNAVAILABLE_TIME ms. * @private */ - function onOfflineTimerFire() { - self.setState(matrixService.presence.offline); + function onUnvailableTimerFire() { + self.setState(matrixService.presence.unavailable); } /** @@ -105,7 +105,7 @@ angular.module('mPresence', []) // Re-arm the timer $timeout.cancel(timer); - timer = $timeout(onOfflineTimerFire, OFFLINE_TIME); + timer = $timeout(onUnvailableTimerFire, UNAVAILABLE_TIME); } }]); |