Skip to content

Commit 08f9e01

Browse files
author
Andrei Husanu
committed
better way of finding what channels a user is in
Generate the correct list of channels where the user is in (for commands: QUIT, NICK and KILL)
1 parent f7bfd7d commit 08f9e01

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

lib/irc.js

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -313,12 +313,14 @@ function Client(server, nick, opt) {
313313

314314
channels = [];
315315

316-
// TODO better way of finding what channels a user is in?
316+
// finding what channels a user is in
317317
Object.keys(self.chans).forEach(function(channame) {
318318
var channel = self.chans[channame];
319-
channel.users[message.args[0]] = channel.users[message.nick];
320-
delete channel.users[message.nick];
321-
channels.push(channame);
319+
if (message.nick in channel.users) {
320+
channel.users[message.args[0]] = channel.users[message.nick];
321+
delete channel.users[message.nick];
322+
channels.push(channame);
323+
}
322324
});
323325

324326
// old nick, new nick, channels
@@ -501,8 +503,10 @@ function Client(server, nick, opt) {
501503
channels = [];
502504
Object.keys(self.chans).forEach(function(channame) {
503505
var channel = self.chans[channame];
504-
channels.push(channame);
505-
delete channel.users[nick];
506+
if (nick in channel.users) {
507+
channels.push(channame);
508+
delete channel.users[nick];
509+
}
506510
});
507511
self.emit('kill', nick, message.args[1], channels, message);
508512
break;
@@ -544,11 +548,13 @@ function Client(server, nick, opt) {
544548

545549
channels = [];
546550

547-
// TODO better way of finding what channels a user is in?
551+
// finding what channels a user is in?
548552
Object.keys(self.chans).forEach(function(channame) {
549553
var channel = self.chans[channame];
550-
delete channel.users[message.nick];
551-
channels.push(channame);
554+
if (message.nick in channel.users) {
555+
delete channel.users[message.nick];
556+
channels.push(channame);
557+
}
552558
});
553559

554560
// who, reason, channels

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
"Justin Gallardo <justin.gallardo@gmail.com>",
1515
"Chris Nehren <cnehren@pobox.com>",
1616
"Henri Niemeläinen <aivot-on@iki.fi>",
17-
"Alex Miles <ghostaldev@gmail.com>"
17+
"Alex Miles <ghostaldev@gmail.com>",
18+
"Andrei Husanu <node-irc@andreihusanu.ro>"
1819
],
1920
"repository": {
2021
"type": "git",

0 commit comments

Comments
 (0)