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._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) {
|
||||||
|
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