More chat fixes.

git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3316 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
Cory McWilliams 2016-08-29 15:17:36 +00:00
parent 380e98b7cf
commit d74825eadc
2 changed files with 25 additions and 21 deletions

View File

@ -242,26 +242,22 @@ function updateConversation() {
gCurrentConversation.session.getHistory(gCurrentConversation.name), gCurrentConversation.session.getHistory(gCurrentConversation.name),
gCurrentConversation.session.getParticipants(gCurrentConversation.name), gCurrentConversation.session.getParticipants(gCurrentConversation.name),
]).then(function(data) { ]).then(function(data) {
let history = data[0]; let [history, participants] = data;
let participants = data[1];
gCurrentConversation.messages = history || [];
if (gCurrentConversation.messages.length > kMaxHistory) {
gCurrentConversation.messages.splice(0, gCurrentConversation.messages.length - kMaxHistory);
}
gCurrentConversation.participants = participants || []; gCurrentConversation.participants = participants || [];
try {
terminal.cork(); terminal.cork();
terminal.select("terminal"); terminal.select("terminal");
terminal.clear(); terminal.clear();
for (var i in gCurrentConversation.messages) { printToConversation(gCurrentConversation, ["[", gCurrentConversation.name, "]"]);
let message = gCurrentConversation.messages[i]; if (history) {
if (message.action == "message") { for (let message of history) {
printMessage(message.message); printToConversation(gCurrentConversation, message);
} else {
terminal.print(message.message);
} }
} }
updateUsers(); updateUsers();
} finally {
terminal.uncork(); terminal.uncork();
}
}).catch(function(error) { }).catch(function(error) {
terminal.print(error); terminal.print(error);
}); });
@ -334,13 +330,16 @@ function printToConversation(conversation, message, notify) {
if (conversation == gCurrentConversation) { if (conversation == gCurrentConversation) {
if (message.action == "message") { if (message.action == "message") {
printMessage(message.message); printMessage(message.message);
} else if (message.action == "presence") {
if (message.presence == "unavailable") {
terminal.print(new Date().toString(), ": ", message.user, " has left the room.");
} else {
terminal.print(new Date().toString(), ": ", message.user, " has joined the room.");
}
} else { } else {
terminal.print(message); terminal.print(message);
} }
} }
if (conversation) {
conversation.messages.push(message);
}
if (notify && !gFocus) { if (notify && !gFocus) {
gUnread++; gUnread++;
updateTitle(); updateTitle();

View File

@ -89,10 +89,13 @@ exports.ChatService = class {
let leaving = state == "unavailable"; let leaving = state == "unavailable";
let participants = this._getConversation(conversation).participants; let participants = this._getConversation(conversation).participants;
let index = participants.indexOf(user); let index = participants.indexOf(user);
let different = true;
if (leaving) { if (leaving) {
participants.splice(index, 1); participants.splice(index, 1);
} else if (index == -1) { } else if (index == -1) {
participants.push(user); participants.push(user);
} else {
different = false;
} }
let message = { let message = {
action: "presence", action: "presence",
@ -100,7 +103,9 @@ exports.ChatService = class {
user: user, user: user,
presence: state, presence: state,
}; };
if (different) {
this._pushMessage(conversation, message); this._pushMessage(conversation, message);
}
this._invokeCallback(message); this._invokeCallback(message);
} }