summary refs log tree commit diff
path: root/webclient/components
diff options
context:
space:
mode:
Diffstat (limited to 'webclient/components')
-rw-r--r--webclient/components/fileUpload/file-upload-service.js2
-rw-r--r--webclient/components/matrix/matrix-call.js35
-rw-r--r--webclient/components/matrix/matrix-service.js26
-rw-r--r--webclient/components/matrix/presence-service.js14
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);
     }    
 
 }]);