Fixing some old chat bugs, I think. Added a thing so that I can monitor use.

git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3315 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
Cory McWilliams 2016-08-29 14:21:55 +00:00
parent 54b5f6154e
commit 380e98b7cf
2 changed files with 49 additions and 3 deletions

View File

@ -23,6 +23,7 @@ exports.ChatService = class {
this._callbacks = [callback]; this._callbacks = [callback];
this._conversations = {}; this._conversations = {};
this._state = null; this._state = null;
this._maxHistory = 64;
} }
makeInterface(service) { makeInterface(service) {
@ -70,9 +71,17 @@ exports.ChatService = class {
return this._conversations[conversation]; return this._conversations[conversation];
} }
_pushMessage(conversation, message) {
let history = this._getConversation(conversation || "").history;
history.push(message);
if (history.length > this._maxHistory) {
history.splice(0, history.length - this._maxHistory);
}
}
notifyMessageReceived(conversation, message) { notifyMessageReceived(conversation, message) {
let fullMessage = {action: "message", conversation: conversation || "", message: message}; let fullMessage = {action: "message", conversation: conversation || "", message: message};
this._getConversation(conversation || "").history.push(fullMessage); this._pushMessage(conversation, fullMessage);
this._invokeCallback(fullMessage); this._invokeCallback(fullMessage);
} }
@ -85,12 +94,14 @@ exports.ChatService = class {
} else if (index == -1) { } else if (index == -1) {
participants.push(user); participants.push(user);
} }
this._invokeCallback({ let message = {
action: "presence", action: "presence",
conversation: conversation, conversation: conversation,
user: user, user: user,
presence: state, presence: state,
}); };
this._pushMessage(conversation, message);
this._invokeCallback(message);
} }
notifyParticipantList(conversation, participants) { notifyParticipantList(conversation, participants) {

View File

@ -0,0 +1,35 @@
"use strict";
//! {"category": "libraries", "require": ["liblist"]}
function formatUser(user) {
return [user.name, " ", user.index.toString(), " ", user.packageOwner, " ", user.packageName];
}
let log = require("liblist").ListStore("log");
if (imports.terminal) {
core.register("onSessionBegin", function(user) {
terminal.print(new Date().toString(), " begin ", formatUser(user));
});
core.register("onSessionEnd", function(user) {
terminal.print(new Date().toString(), " end ", formatUser(user));
});
log.get(-1, -32).then(function(results) {
for (let result of results) {
terminal.print(result[0].toString(), " ", result[1], " ", formatUser(result[2]));
}
}).catch(terminal.print);
core.getService("logger");
} else {
core.register("onSessionBegin", function(user) {
return log.push([new Date(), "begin", user]);
});
core.register("onSessionEnd", function(user) {
return log.push([new Date(), "end", user]);
});
}