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