diff --git a/libresapi/src/webui-src/README.md b/libresapi/src/webui-src/README.md index 508886842..e4534fa26 100644 --- a/libresapi/src/webui-src/README.md +++ b/libresapi/src/webui-src/README.md @@ -54,5 +54,5 @@ should provide forward, backward and follow-list-end need 4 master ------------- [ ] unsubscribe lobby -[ ] unread chat message counter in menu +[X] unread chat message counter in menu [ ] list chat-lobby participants diff --git a/libresapi/src/webui-src/app/menudef.js b/libresapi/src/webui-src/app/menudef.js index 538b7cc75..16e9a4c51 100644 --- a/libresapi/src/webui-src/app/menudef.js +++ b/libresapi/src/webui-src/app/menudef.js @@ -70,6 +70,24 @@ module.exports = { nodes: [ { name: "chat", runstate: "running_ok.*", + counter: rs.counting2([ + { + path: "peers", + counter: function(peer) { + var sum = 0; + peer.locations.map(function (loc) { + sum += parseInt(loc.unread_msgs); + }); + return sum; + } + }, + { + path: "chat/lobbies", + counter: function(lobby) { + return lobby.unread_msg_count; + } + } + ]) }, { name: "shutdown", diff --git a/libresapi/src/webui-src/app/retroshare.js b/libresapi/src/webui-src/app/retroshare.js index 8cd34a3f3..9f9bb7ee0 100644 --- a/libresapi/src/webui-src/app/retroshare.js +++ b/libresapi/src/webui-src/app/retroshare.js @@ -282,6 +282,26 @@ rs.counting = function(path, counterfnkt) { } }; +// counting in menu +rs.counting2 = function(targets) { + return function () { + var sum = 0; + targets.map(function(target) { + var data=rs(target.path); + if (data != undefined) { + data.map(function(item){ + sum += parseInt(target.counter(item)); + }); + }; + return null; + }); + if (sum > 0) { + return " (" + sum + ")"; + } + return ""; + } +}; + // listing data-elements rs.list = function(path, buildfktn, sortfktn){ var list = rs(path);