mirror of https://github.com/calzoneman/sync.git
Handle mute/unmute/smute and related icons
This commit is contained in:
parent
6471969f55
commit
cd73653451
|
@ -1156,6 +1156,34 @@ Channel.prototype.packUserData = function (user) {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sends a user.meta update, optionally filtering by minimum rank
|
||||||
|
*/
|
||||||
|
Channel.prototype.sendUserMeta = function (users, user, minrank) {
|
||||||
|
var self = this;
|
||||||
|
var userdata = self.packUserData(user);
|
||||||
|
self.users.filter(function (u) {
|
||||||
|
return typeof minrank !== "number" || u.rank > minrank
|
||||||
|
}).forEach(function (u) {
|
||||||
|
if (u.rank >= 255) {
|
||||||
|
u.socket.emit("setUserMeta", {
|
||||||
|
name: user.name,
|
||||||
|
meta: userdata.sadmin.meta
|
||||||
|
});
|
||||||
|
} else if (u.rank >= 2) {
|
||||||
|
u.socket.emit("setUserMeta", {
|
||||||
|
name: user.name,
|
||||||
|
meta: userdata.mod.meta
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
u.socket.emit("setUserMeta", {
|
||||||
|
name: user.name,
|
||||||
|
meta: userdata.base.meta
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send a user join notification
|
* Send a user join notification
|
||||||
*/
|
*/
|
||||||
|
@ -2537,7 +2565,7 @@ Channel.prototype.handleChat = function (user, data) {
|
||||||
time: Date.now()
|
time: Date.now()
|
||||||
};
|
};
|
||||||
this.shadowMutedUsers().forEach(function (u) {
|
this.shadowMutedUsers().forEach(function (u) {
|
||||||
u.socket.emit("chatMsg", msgobject);
|
u.socket.emit("chatMsg", msgobj);
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -195,32 +195,13 @@ function handleShadowMute(chan, user, args) {
|
||||||
/* Reset a previous regular mute */
|
/* Reset a previous regular mute */
|
||||||
if (chan.mutedUsers.contains(person.name.toLowerCase())) {
|
if (chan.mutedUsers.contains(person.name.toLowerCase())) {
|
||||||
chan.mutedUsers.remove(person.name.toLowerCase());
|
chan.mutedUsers.remove(person.name.toLowerCase());
|
||||||
chan.sendAll("setUserIcon", {
|
|
||||||
name: person.name,
|
|
||||||
icon: false
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
person.meta.smuted = person.meta.muted = true;
|
||||||
|
chan.sendUserMeta(chan.users, person, 2);
|
||||||
chan.mutedUsers.add("[shadow]" + person.name.toLowerCase());
|
chan.mutedUsers.add("[shadow]" + person.name.toLowerCase());
|
||||||
chan.logger.log("*** " + user.name + " shadow muted " + args[0]);
|
chan.logger.log("*** " + user.name + " shadow muted " + args[0]);
|
||||||
person.meta.icon = "icon-volume-off";
|
chan.sendModMessage(user.name + " shadow muted " + args[0], 2);
|
||||||
chan.sendAllExcept(person, "setUserIcon", {
|
|
||||||
name: person.name,
|
|
||||||
icon: "icon-volume-off"
|
|
||||||
});
|
|
||||||
var pkt = {
|
|
||||||
username: "[server]",
|
|
||||||
msg: user.name + " shadow muted " + args[0],
|
|
||||||
meta: {
|
|
||||||
addClass: "server-whisper",
|
|
||||||
addClassToNameAndTimestamp: true
|
|
||||||
},
|
|
||||||
time: Date.now()
|
|
||||||
};
|
|
||||||
chan.users.forEach(function (u) {
|
|
||||||
if (u.rank >= 2) {
|
|
||||||
u.socket.emit("chatMsg", pkt);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -243,13 +224,11 @@ function handleMute(chan, user, args) {
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
person.meta.icon = "icon-volume-off";
|
person.meta.muted = true;
|
||||||
|
chan.sendUserMeta(chan.users, person);
|
||||||
chan.mutedUsers.add(person.name.toLowerCase());
|
chan.mutedUsers.add(person.name.toLowerCase());
|
||||||
chan.sendAll("setUserIcon", {
|
|
||||||
name: person.name,
|
|
||||||
icon: "icon-volume-off"
|
|
||||||
});
|
|
||||||
chan.logger.log("*** " + user.name + " muted " + args[0]);
|
chan.logger.log("*** " + user.name + " muted " + args[0]);
|
||||||
|
chan.sendModMessage(user.name + " muted " + args[0], 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -272,14 +251,14 @@ function handleUnmute(chan, user, args) {
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
person.meta.icon = false;
|
person.meta.muted = false;
|
||||||
|
var wasSmuted = person.meta.smuted;
|
||||||
|
person.meta.smuted = false;
|
||||||
|
chan.sendUserMeta(chan.users, person, wasSmuted ? 2 : false);
|
||||||
chan.mutedUsers.remove(person.name.toLowerCase());
|
chan.mutedUsers.remove(person.name.toLowerCase());
|
||||||
chan.mutedUsers.remove("[shadow]" + person.name.toLowerCase());
|
chan.mutedUsers.remove("[shadow]" + person.name.toLowerCase());
|
||||||
chan.sendAll("setUserIcon", {
|
|
||||||
name: person.name,
|
|
||||||
icon: false
|
|
||||||
});
|
|
||||||
chan.logger.log("*** " + user.name + " unmuted " + args[0]);
|
chan.logger.log("*** " + user.name + " unmuted " + args[0]);
|
||||||
|
chan.sendModMessage(user.name + " unmuted " + args[0], 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
28
lib/user.js
28
lib/user.js
|
@ -128,34 +128,6 @@ User.prototype.kick = function (reason) {
|
||||||
this.socket.disconnect(true);
|
this.socket.disconnect(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Packs user metadata
|
|
||||||
*/
|
|
||||||
User.prototype.packMeta = function (opts) {
|
|
||||||
var meta = {};
|
|
||||||
if (opts.afk) {
|
|
||||||
meta.afk = this.meta.afk;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (opts.aliases) {
|
|
||||||
meta.aliases = this.meta.aliases;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (opts.ip) {
|
|
||||||
meta.ip = this.ip;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (opts.muted) {
|
|
||||||
meta.muted = this.meta.muted;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (opts.smuted) {
|
|
||||||
meta.smuted = this.meta.smuted;
|
|
||||||
}
|
|
||||||
|
|
||||||
return meta;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes socket message callbacks for a channel user
|
* Initializes socket message callbacks for a channel user
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -529,6 +529,15 @@ Callbacks = {
|
||||||
}
|
}
|
||||||
|
|
||||||
user.data("meta", data);
|
user.data("meta", data);
|
||||||
|
if (data.meta.muted || data.meta.smuted) {
|
||||||
|
user.data("icon", "glyphicon-volume-off");
|
||||||
|
} else {
|
||||||
|
user.data("icon", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
formatUserlistItem(user, data);
|
||||||
|
addUserDropdown(user, data);
|
||||||
|
sortUserlist();
|
||||||
},
|
},
|
||||||
|
|
||||||
setUserProfile: function (data) {
|
setUserProfile: function (data) {
|
||||||
|
|
Loading…
Reference in New Issue