diff options
author | Erik Johnston <erik@matrix.org> | 2014-08-18 11:14:57 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2014-08-18 11:14:57 +0100 |
commit | 1c2caacd67d5c00fe96c302749e30da3dc4a213f (patch) | |
tree | 4ce4c26aeef0ef31471ce238cbae91e7225bccb1 /webclient/app.js | |
parent | Change the MemoryDataStore to implement new storage api (diff) | |
parent | webclient: Tweak namespace of auto-complete directive. ng- should really only... (diff) | |
download | synapse-1c2caacd67d5c00fe96c302749e30da3dc4a213f.tar.xz |
Merge branch 'master' of github.com:matrix-org/synapse into sql_refactor
Diffstat (limited to 'webclient/app.js')
-rw-r--r-- | webclient/app.js | 62 |
1 files changed, 58 insertions, 4 deletions
diff --git a/webclient/app.js b/webclient/app.js index 58d3942c65..8d64db92d3 100644 --- a/webclient/app.js +++ b/webclient/app.js @@ -63,9 +63,8 @@ matrixWebClient.config(['$routeProvider', '$provide', '$httpProvider', }]); matrixWebClient.run(['$location', 'matrixService', 'eventStreamService', function($location, matrixService, eventStreamService) { - // If we have no persistent login information, go to the login page - var config = matrixService.config(); - if (!config || !config.access_token) { + // If user auth details are not in cache, go to the login page + if (!matrixService.isUserLoggedIn()) { eventStreamService.stop(); $location.path("login"); } @@ -94,7 +93,62 @@ matrixWebClient } }; }]) - .filter('to_trusted', ['$sce', function($sce){ + .filter('duration', function() { + return function(time) { + if (!time) return; + var t = parseInt(time / 1000); + var s = t % 60; + var m = parseInt(t / 60) % 60; + var h = parseInt(t / (60 * 60)) % 24; + var d = parseInt(t / (60 * 60 * 24)); + if (t < 60) { + return s + "s" + } + if (t < 60 * 60) { + return m + "m "; // + s + "s"; + } + if (t < 24 * 60 * 60) { + return h + "h "; // + m + "m"; + } + return d + "d "; // + h + "h"; + } + }) + .filter('orderMembersList', function($sce) { + return function(members) { + var filtered = []; + + var displayNames = {}; + angular.forEach(members, function(value, key) { + value["id"] = key; + filtered.push( value ); + if (value["displayname"]) { + if (!displayNames[value["displayname"]]) { + displayNames[value["displayname"]] = []; + } + displayNames[value["displayname"]].push(key); + } + }); + + // FIXME: we shouldn't disambiguate displayNames on every orderMembersList + // invocation but keep track of duplicates incrementally somewhere + angular.forEach(displayNames, function(value, key) { + if (value.length > 1) { + // console.log(key + ": " + value); + for (i=0; i < value.length; i++) { + var v = value[i]; + members[v].displayname += " (" + v + ")"; + // console.log(v + " " + members[v]); + }; + } + }); + + filtered.sort(function (a, b) { + return ((a["mtime_age"] || 10e10) > (b["mtime_age"] || 10e10) ? 1 : -1); + }); + return filtered; + }; + }) + .filter('unsafe', ['$sce', function($sce) { return function(text) { return $sce.trustAsHtml(text); }; |