Merge pull request #304 from calzoneman/userupdaterefactor

Refactor broadcastUserUpdate
This commit is contained in:
Calvin Montgomery 2013-11-09 10:43:04 -08:00
commit 22e2180790
6 changed files with 138 additions and 42 deletions

View file

@ -448,7 +448,10 @@ module.exports = function (Server) {
image: img,
text: text
};
chan.broadcastUserUpdate(user);
chan.sendAll("setUserProfile", {
name: user.name,
profile: user.profile
});
}
}
}

View file

@ -1004,13 +1004,15 @@ Channel.prototype.sendUserlist = function(user) {
users.push({
name: this.users[i].name,
rank: this.users[i].rank,
leader: this.users[i] == this.leader,
meta: this.users[i].meta,
profile: this.users[i].profile
});
}
}
user.socket.emit("userlist", users);
if (this.leader !== null) {
user.socket.emit("setLeader", this.leader.name);
}
}
// Send the last 15 messages for context
@ -1038,6 +1040,14 @@ Channel.prototype.sendAllWithRank = function(rank, msg, data) {
}
}
Channel.prototype.sendAllExcept = function(user, msg, data) {
for(var i = 0; i < this.users.length; i++) {
if (this.users[i] !== user) {
this.users[i].socket.emit(msg, data);
}
}
}
Channel.prototype.broadcastPlaylistMeta = function() {
var total = 0;
var iter = this.playlist.items.first;
@ -1095,16 +1105,24 @@ Channel.prototype.broadcastNewUser = function(user) {
self.kick(user, "You're banned!");
return;
}
if (self.mutedUsers.contains(user.name.toLowerCase())) {
if (self.mutedUsers.contains(user.name.toLowerCase()) ||
self.mutedUsers.contains("[shadow]"+user.name.toLowerCase())) {
user.meta.icon = "icon-volume-off";
}
self.sendAll("addUser", {
var pkt = {
name: user.name,
rank: user.rank,
leader: self.leader == user,
meta: user.meta,
profile: user.profile
});
};
if (self.mutedUsers.contains("[shadow]"+user.name.toLowerCase())) {
self.sendAllExcept(user, "addUser", pkt);
pkt.meta.icon = false;
user.socket.emit("addUser", pkt);
} else {
self.sendAll("addUser", pkt);
}
if(user.rank > 0) {
self.saveInitialRank(user);
@ -1118,21 +1136,7 @@ Channel.prototype.broadcastNewUser = function(user) {
msgclass: "server-whisper",
time: Date.now()
};
self.users.forEach(function(u) {
if(u.rank >= 2) {
u.socket.emit("joinMessage", pkt);
}
});
});
}
Channel.prototype.broadcastUserUpdate = function(user) {
this.sendAll("updateUser", {
name: user.name,
rank: user.rank,
leader: this.leader == user,
meta: user.meta,
profile: user.profile
self.sendAllWithRank(2, "joinMessage", pkt);
});
}
@ -2323,7 +2327,10 @@ Channel.prototype.trySetRank = function(user, data) {
self.sendAllWithRank(3, "setChannelRank", data);
});
}
self.broadcastUserUpdate(receiver);
self.sendAll("setUserRank", {
name: receiver.name,
rank: receiver.rank
});
} else if(self.registered) {
self.getRank(data.user, function (err, rrank) {
if (self.dead)
@ -2354,15 +2361,20 @@ Channel.prototype.changeLeader = function(name) {
if(old.rank == 1.5) {
old.rank = old.oldrank;
}
this.broadcastUserUpdate(old);
this.sendAll("setUserRank", {
name: name,
rank: old.rank
});
}
if(name == "") {
this.sendAll("setLeader", "");
this.logger.log("*** Resuming autolead");
this.playlist.lead(true);
return;
}
for(var i = 0; i < this.users.length; i++) {
if(this.users[i].name == name) {
this.sendAll("setLeader", name);
this.logger.log("*** Assigned leader: " + name);
this.playlist.lead(false);
this.leader = this.users[i];
@ -2370,7 +2382,10 @@ Channel.prototype.changeLeader = function(name) {
this.users[i].oldrank = this.users[i].rank;
this.users[i].rank = 1.5;
}
this.broadcastUserUpdate(this.leader);
this.sendAll("setUserRank", {
name: name,
rank: this.users[i].rank
});
}
}
}

View file

@ -119,8 +119,21 @@ function handleShadowMute(chan, user, args) {
});
return;
}
/* Reset a previous regular mute */
if (chan.mutedUsers.contains(person.name.toLowerCase())) {
chan.mutedUsers.remove(person.name.toLowerCase());
chan.sendAll("setUserIcon", {
name: person.name,
icon: false
});
}
chan.mutedUsers.add("[shadow]" + person.name.toLowerCase());
chan.logger.log("*** " + user.name + " shadow muted " + args[0]);
person.meta.icon = "icon-volume-off";
chan.sendAllExcept(person, "setUserIcon", {
name: person.name,
icon: "icon-volume-off"
});
var pkt = {
username: "[server]",
msg: user.name + " shadow muted " + args[0],
@ -156,7 +169,10 @@ function handleMute(chan, user, args) {
}
person.meta.icon = "icon-volume-off";
chan.mutedUsers.add(person.name.toLowerCase());
chan.broadcastUserUpdate(person);
chan.sendAll("setUserIcon", {
name: person.name,
icon: "icon-volume-off"
});
chan.logger.log("*** " + user.name + " muted " + args[0]);
}
}
@ -183,7 +199,10 @@ function handleUnmute(chan, user, args) {
person.meta.icon = false;
chan.mutedUsers.remove(person.name.toLowerCase());
chan.mutedUsers.remove("[shadow]" + person.name.toLowerCase());
chan.broadcastUserUpdate(person);
chan.sendAll("setUserIcon", {
name: person.name,
icon: false
});
chan.logger.log("*** " + user.name + " unmuted " + args[0]);
}
}

View file

@ -589,8 +589,12 @@ User.prototype.initCallbacks = function () {
self.rank = rank;
self.socket.emit("rank", rank);
if (self.inChannel())
self.channel.broadcastUserUpdate(self);
if (self.inChannel()) {
self.channel.sendAll("setUserRank", {
name: self.name,
rank: rank
});
}
});
};