Mark channels as read when receiving self-messages

Resets highlight counter and last unread message ID on server, and
clears the badge on the active client when the message is rendered.

Resolves #911
This commit is contained in:
dgw 2017-10-17 07:42:43 -05:00
parent e3ee3f7788
commit d675297405
2 changed files with 10 additions and 1 deletions

View file

@ -61,6 +61,11 @@ function processReceivedMessage(data) {
.appendTo(container);
}
// Clear unread/highlight counter if self-message
if (data.msg.self) {
sidebar.find("[data-target='" + target + "'] .badge").removeClass("highlight").empty();
}
// Message arrived in a non active channel, trim it to 100 messages
if (activeChannelId !== targetId && container.find(".msg").slice(0, -100).remove().length) {
channel.find(".show-more").addClass("show");

View file

@ -72,7 +72,11 @@ Chan.prototype.pushMessage = function(client, msg, increasesUnread) {
}
}
if (!msg.self && !isOpen) {
if (msg.self) {
// reset counters/markers when receiving self-/echo-message
this.firstUnread = 0;
this.highlight = 0;
} else if (!isOpen) {
if (!this.firstUnread) {
this.firstUnread = msg.id;
}