serverMemberUpdate listener

This commit is contained in:
hydrabolt
2015-11-01 16:04:59 +00:00
parent b7656f3877
commit 0d6e913454
4 changed files with 56 additions and 12 deletions

View File

@@ -680,7 +680,9 @@ var InternalClient = (function () {
if (server) {
server.memberMap[data.user.id] = {
roles: data.roles,
roles: data.roles.map(function (pid) {
return server.roles.get("id", pid);
}),
mute: false,
deaf: false,
joinedAt: Date.parse(data.joined_at)
@@ -696,6 +698,7 @@ var InternalClient = (function () {
if (server) {
var user = self.users.get("id", data.user.id);
if (user) {
server.memberMap[data.user.id] = null;
server.members.remove(user);
client.emit("serverMemberRemoved", server, user);
} else {
@@ -705,6 +708,24 @@ var InternalClient = (function () {
client.emit("warn", "server member removed but server doesn't exist in cache");
}
break;
case PacketType.SERVER_MEMBER_UPDATE:
var server = self.servers.get("id", data.guild_id);
if (server) {
var user = self.users.get("id", data.user.id);
if (user) {
server.memberMap[data.user.id].roles = data.roles.map(function (pid) {
return server.roles.get("id", pid);
});
server.memberMap[data.user.id].mute = data.mute;
server.memberMap[data.user.id].deaf = data.deaf;
client.emit("serverMemberUpdated", server, user);
} else {
client.emit("warn", "server member removed but user doesn't exist in cache");
}
} else {
client.emit("warn", "server member updated but server doesn't exist in cache");
}
break;
}
};
};

View File

@@ -41,9 +41,17 @@ var Server = (function (_Equality) {
this.afkChannelID = data.afk_channel_id;
this.memberMap = {};
var self = this;
data.roles.forEach(function (dataRole) {
_this.roles.add(new Role(dataRole, _this, client));
});
data.members.forEach(function (dataUser) {
_this.memberMap[dataUser.user.id] = {
roles: dataUser.roles,
roles: dataUser.roles.map(function (pid) {
return self.roles.get("id", pid);
}),
mute: dataUser.mute,
deaf: dataUser.deaf,
joinedAt: Date.parse(dataUser.joined_at)
@@ -61,10 +69,6 @@ var Server = (function (_Equality) {
_this.channels.add(channel);
}
});
data.roles.forEach(function (dataRole) {
_this.roles.add(new Role(dataRole, _this, client));
});
}
Server.prototype.toString = function toString() {

View File

@@ -704,7 +704,7 @@ class InternalClient {
if (server) {
server.memberMap[data.user.id] = {
roles: data.roles,
roles: data.roles.map((pid) => server.roles.get("id", pid)),
mute: false,
deaf: false,
joinedAt: Date.parse(data.joined_at)
@@ -725,6 +725,7 @@ class InternalClient {
if(server){
var user = self.users.get("id", data.user.id);
if(user){
server.memberMap[data.user.id] = null;
server.members.remove(user);
client.emit("serverMemberRemoved", server, user);
}else{
@@ -734,6 +735,22 @@ class InternalClient {
client.emit("warn", "server member removed but server doesn't exist in cache");
}
break;
case PacketType.SERVER_MEMBER_UPDATE:
var server = self.servers.get("id", data.guild_id);
if(server){
var user = self.users.get("id", data.user.id);
if(user){
server.memberMap[data.user.id].roles = data.roles.map((pid) => server.roles.get("id", pid));
server.memberMap[data.user.id].mute = data.mute;
server.memberMap[data.user.id].deaf = data.deaf;
client.emit("serverMemberUpdated", server, user);
}else{
client.emit("warn", "server member removed but user doesn't exist in cache");
}
}else{
client.emit("warn", "server member updated but server doesn't exist in cache");
}
break;
}
}
}

View File

@@ -32,9 +32,15 @@ class Server extends Equality {
this.afkChannelID = data.afk_channel_id;
this.memberMap = {};
var self = this;
data.roles.forEach( (dataRole) => {
this.roles.add( new Role(dataRole, this, client) );
} );
data.members.forEach( (dataUser) => {
this.memberMap[dataUser.user.id] = {
roles : dataUser.roles,
roles : dataUser.roles.map((pid) => self.roles.get("id", pid)),
mute : dataUser.mute,
deaf : dataUser.deaf,
joinedAt : Date.parse(dataUser.joined_at)
@@ -52,10 +58,6 @@ class Server extends Equality {
this.channels.add(channel);
}
} );
data.roles.forEach( (dataRole) => {
this.roles.add( new Role(dataRole, this, client) );
} );
}
get iconURL() {