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