forked from cory/tildefriends
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:
parent
54b5f6154e
commit
380e98b7cf
@ -23,6 +23,7 @@ exports.ChatService = class {
|
||||
this._callbacks = [callback];
|
||||
this._conversations = {};
|
||||
this._state = null;
|
||||
this._maxHistory = 64;
|
||||
}
|
||||
|
||||
makeInterface(service) {
|
||||
@ -70,9 +71,17 @@ exports.ChatService = class {
|
||||
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) {
|
||||
let fullMessage = {action: "message", conversation: conversation || "", message: message};
|
||||
this._getConversation(conversation || "").history.push(fullMessage);
|
||||
this._pushMessage(conversation, fullMessage);
|
||||
this._invokeCallback(fullMessage);
|
||||
}
|
||||
|
||||
@ -85,12 +94,14 @@ exports.ChatService = class {
|
||||
} else if (index == -1) {
|
||||
participants.push(user);
|
||||
}
|
||||
this._invokeCallback({
|
||||
let message = {
|
||||
action: "presence",
|
||||
conversation: conversation,
|
||||
user: user,
|
||||
presence: state,
|
||||
});
|
||||
};
|
||||
this._pushMessage(conversation, message);
|
||||
this._invokeCallback(message);
|
||||
}
|
||||
|
||||
notifyParticipantList(conversation, participants) {
|
||||
|
35
packages/cory/monitor/monitor.js
Normal file
35
packages/cory/monitor/monitor.js
Normal 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]);
|
||||
});
|
||||
}
|
Loading…
Reference in New Issue
Block a user