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:
		| @@ -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]); | ||||||
|  | 	}); | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user