diff --git a/src/client.js b/src/client.js index 97252954..651f516c 100644 --- a/src/client.js +++ b/src/client.js @@ -5,7 +5,6 @@ var colors = require("colors/safe"); var pkg = require("../package.json"); var Chan = require("./models/chan"); var crypto = require("crypto"); -var userLog = require("./userLog"); var Msg = require("./models/msg"); var Network = require("./models/network"); var ircFramework = require("irc-framework"); @@ -114,23 +113,6 @@ Client.prototype.emit = function(event, data) { if (this.sockets !== null) { this.sockets.in(this.id).emit(event, data); } - if (this.config.log === true) { - if (event === "msg") { - var target = this.find(data.chan); - if (target) { - var chan = target.chan.name; - if (target.chan.type === Chan.Type.LOBBY) { - chan = target.network.host; - } - userLog.write( - this.name, - target.network.host, - chan, - data.msg - ); - } - } - } }; Client.prototype.find = function(channelId) { diff --git a/src/models/chan.js b/src/models/chan.js index e06e264f..0706ff64 100644 --- a/src/models/chan.js +++ b/src/models/chan.js @@ -2,6 +2,7 @@ var _ = require("lodash"); var Helper = require("../helper"); +const userLog = require("../userLog"); const storage = require("../plugins/storage"); module.exports = Chan; @@ -57,6 +58,10 @@ Chan.prototype.pushMessage = function(client, msg, increasesUnread) { this.messages.push(msg); + if (client.config.log === true) { + writeUserLog(client, msg); + } + if (Helper.config.maxHistory >= 0 && this.messages.length > Helper.config.maxHistory) { const deleted = this.messages.splice(0, this.messages.length - Helper.config.maxHistory); @@ -127,3 +132,14 @@ Chan.prototype.toJSON = function() { clone.messages = clone.messages.slice(-100); return clone; }; + +function writeUserLog(client, msg) { + const target = client.find(this.id); + + userLog.write( + client.name, + target.network.host, // TODO: Fix #1392, multiple connections to same server results in duplicate logs + this.type === Chan.Type.LOBBY ? target.network.host : this.name, + msg + ); +}