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:
parent
380e98b7cf
commit
d74825eadc
@ -242,26 +242,22 @@ function updateConversation() {
|
||||
gCurrentConversation.session.getHistory(gCurrentConversation.name),
|
||||
gCurrentConversation.session.getParticipants(gCurrentConversation.name),
|
||||
]).then(function(data) {
|
||||
let history = data[0];
|
||||
let participants = data[1];
|
||||
gCurrentConversation.messages = history || [];
|
||||
if (gCurrentConversation.messages.length > kMaxHistory) {
|
||||
gCurrentConversation.messages.splice(0, gCurrentConversation.messages.length - kMaxHistory);
|
||||
}
|
||||
let [history, participants] = data;
|
||||
gCurrentConversation.participants = participants || [];
|
||||
try {
|
||||
terminal.cork();
|
||||
terminal.select("terminal");
|
||||
terminal.clear();
|
||||
for (var i in gCurrentConversation.messages) {
|
||||
let message = gCurrentConversation.messages[i];
|
||||
if (message.action == "message") {
|
||||
printMessage(message.message);
|
||||
} else {
|
||||
terminal.print(message.message);
|
||||
printToConversation(gCurrentConversation, ["[", gCurrentConversation.name, "]"]);
|
||||
if (history) {
|
||||
for (let message of history) {
|
||||
printToConversation(gCurrentConversation, message);
|
||||
}
|
||||
}
|
||||
updateUsers();
|
||||
} finally {
|
||||
terminal.uncork();
|
||||
}
|
||||
}).catch(function(error) {
|
||||
terminal.print(error);
|
||||
});
|
||||
@ -334,13 +330,16 @@ function printToConversation(conversation, message, notify) {
|
||||
if (conversation == gCurrentConversation) {
|
||||
if (message.action == "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 {
|
||||
terminal.print(message);
|
||||
}
|
||||
}
|
||||
if (conversation) {
|
||||
conversation.messages.push(message);
|
||||
}
|
||||
if (notify && !gFocus) {
|
||||
gUnread++;
|
||||
updateTitle();
|
||||
|
@ -89,10 +89,13 @@ exports.ChatService = class {
|
||||
let leaving = state == "unavailable";
|
||||
let participants = this._getConversation(conversation).participants;
|
||||
let index = participants.indexOf(user);
|
||||
let different = true;
|
||||
if (leaving) {
|
||||
participants.splice(index, 1);
|
||||
} else if (index == -1) {
|
||||
participants.push(user);
|
||||
} else {
|
||||
different = false;
|
||||
}
|
||||
let message = {
|
||||
action: "presence",
|
||||
@ -100,7 +103,9 @@ exports.ChatService = class {
|
||||
user: user,
|
||||
presence: state,
|
||||
};
|
||||
if (different) {
|
||||
this._pushMessage(conversation, message);
|
||||
}
|
||||
this._invokeCallback(message);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user