Fix more things
This commit is contained in:
parent
1aa464caa5
commit
22c4e8f9ff
|
|
@ -73,7 +73,7 @@ function initChannelDumper(Server) {
|
||||||
for (var i = 0; i < Server.channels.length; i++) {
|
for (var i = 0; i < Server.channels.length; i++) {
|
||||||
var chan = Server.channels[i];
|
var chan = Server.channels[i];
|
||||||
if (!chan.dead && chan.users && chan.users.length > 0) {
|
if (!chan.dead && chan.users && chan.users.length > 0) {
|
||||||
chan.saveDump();
|
chan.saveState();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, CHANNEL_SAVE_INTERVAL);
|
}, CHANNEL_SAVE_INTERVAL);
|
||||||
|
|
|
||||||
|
|
@ -467,7 +467,7 @@ Channel.prototype.join = function (user, password) {
|
||||||
user.whenLoggedIn(function () {
|
user.whenLoggedIn(function () {
|
||||||
var lname = user.name.toLowerCase();
|
var lname = user.name.toLowerCase();
|
||||||
for (var i = 0; i < self.users.length; i++) {
|
for (var i = 0; i < self.users.length; i++) {
|
||||||
if (self.users[i] !== user) {
|
if (self.users[i].name.toLowerCase() === lname && self.users[i] !== user) {
|
||||||
self.users[i].kick("Duplicate login");
|
self.users[i].kick("Duplicate login");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -485,6 +485,7 @@ Channel.prototype.join = function (user, password) {
|
||||||
|
|
||||||
user.socket.emit("rank", user.rank);
|
user.socket.emit("rank", user.rank);
|
||||||
self.sendUserJoin(self.users, user);
|
self.sendUserJoin(self.users, user);
|
||||||
|
self.sendUserlist([user]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -994,34 +995,29 @@ Channel.prototype.sendDrinkCount = function (users) {
|
||||||
*/
|
*/
|
||||||
Channel.prototype.sendUserlist = function (toUsers) {
|
Channel.prototype.sendUserlist = function (toUsers) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var users = [];
|
var base = [];
|
||||||
var detailedUsers = [];
|
var mod = [];
|
||||||
|
var sadmin = [];
|
||||||
|
|
||||||
for (var i = 0; i < this.users.length; i++) {
|
for (var i = 0; i < self.users.length; i++) {
|
||||||
var u = this.users[i];
|
var u = self.users[i];
|
||||||
if (u.name === "") {
|
if (u.name === "") {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
users.push({
|
var data = self.packUserData(self.users[i]);
|
||||||
name: u.name,
|
base.push(data.base);
|
||||||
rank: u.rank,
|
mod.push(data.mod);
|
||||||
profile: u.profile
|
sadmin.push(data.sadmin);
|
||||||
});
|
|
||||||
|
|
||||||
detailedUsers.push({
|
|
||||||
name: u.name,
|
|
||||||
rank: u.rank,
|
|
||||||
meta: u.meta,
|
|
||||||
profile: u.profile
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
toUsers.forEach(function (u) {
|
toUsers.forEach(function (u) {
|
||||||
if (u.rank >= 2) {
|
if (u.global_rank >= 255) {
|
||||||
u.socket.emit("userlist", detailedUsers);
|
u.socket.emit("userlist", sadmin);
|
||||||
|
} else if (u.rank >= 2) {
|
||||||
|
u.socket.emit("userlist", mod);
|
||||||
} else {
|
} else {
|
||||||
u.socket.emit("userlist", users);
|
u.socket.emit("userlist", base);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self.leader != null) {
|
if (self.leader != null) {
|
||||||
|
|
@ -1052,6 +1048,53 @@ Channel.prototype.sendRecentChat = function (users) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Packs userdata for addUser or userlist
|
||||||
|
*/
|
||||||
|
Channel.prototype.packUserData = function (user) {
|
||||||
|
var base = {
|
||||||
|
name: user.name,
|
||||||
|
rank: user.rank,
|
||||||
|
profile: user.profile,
|
||||||
|
meta: {
|
||||||
|
afk: user.meta.afk,
|
||||||
|
muted: user.meta.muted && !user.meta.smuted
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var mod = {
|
||||||
|
name: user.name,
|
||||||
|
rank: user.rank,
|
||||||
|
profile: user.profile,
|
||||||
|
meta: {
|
||||||
|
afk: user.meta.afk,
|
||||||
|
muted: user.meta.muted,
|
||||||
|
smuted: user.meta.smuted,
|
||||||
|
aliases: user.meta.aliases,
|
||||||
|
ip: util.maskIP(user.ip)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var sadmin = {
|
||||||
|
name: user.name,
|
||||||
|
rank: user.rank,
|
||||||
|
profile: user.profile,
|
||||||
|
meta: {
|
||||||
|
afk: user.meta.afk,
|
||||||
|
muted: user.meta.muted,
|
||||||
|
smuted: user.meta.smuted,
|
||||||
|
aliases: user.meta.aliases,
|
||||||
|
ip: user.ip
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
base: base,
|
||||||
|
mod: mod,
|
||||||
|
sadmin: sadmin
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send a user join notification
|
* Send a user join notification
|
||||||
*/
|
*/
|
||||||
|
|
@ -1062,7 +1105,7 @@ Channel.prototype.sendUserJoin = function (users, user) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (err) {
|
if (err || aliases.length === 0) {
|
||||||
aliases = [user.name];
|
aliases = [user.name];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1076,41 +1119,20 @@ Channel.prototype.sendUserJoin = function (users, user) {
|
||||||
if (self.isShadowMuted(user.name)) {
|
if (self.isShadowMuted(user.name)) {
|
||||||
user.meta.muted = true;
|
user.meta.muted = true;
|
||||||
user.meta.shadowmuted = true;
|
user.meta.shadowmuted = true;
|
||||||
user.meta.icon = "icon-volume-off";
|
|
||||||
} else if (self.isMuted(user.name)) {
|
} else if (self.isMuted(user.name)) {
|
||||||
user.meta.muted = true;
|
user.meta.muted = true;
|
||||||
user.meta.shadowmuted = false;
|
user.meta.shadowmuted = false;
|
||||||
user.meta.icon = "icon-volume-off";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var base = {
|
var data = self.packUserData(user);
|
||||||
name: user.name,
|
|
||||||
rank: user.rank,
|
|
||||||
profile: user.profile,
|
|
||||||
meta: {
|
|
||||||
afk: user.meta.afk
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (user.meta.icon && !user.meta.shadowmuted) {
|
|
||||||
base.meta.icon = user.meta.icon;
|
|
||||||
}
|
|
||||||
|
|
||||||
var mod = {
|
|
||||||
name: user.name,
|
|
||||||
rank: user.rank,
|
|
||||||
profile: user.profile,
|
|
||||||
meta: {
|
|
||||||
afk: user.meta.afk,
|
|
||||||
icon: user.meta.icon
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
users.forEach(function (u) {
|
users.forEach(function (u) {
|
||||||
if (u.rank >= 2) {
|
if (u.global_rank >= 255) {
|
||||||
u.socket.emit("addUser", mod);
|
u.socket.emit("addUser", data.sadmin);
|
||||||
|
} else if (u.rank >= 2) {
|
||||||
|
u.socket.emit("addUser", data.mod);
|
||||||
} else {
|
} else {
|
||||||
u.socket.emit("addUser", base);
|
u.socket.emit("addUser", data.base);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
28
lib/user.js
28
lib/user.js
|
|
@ -126,6 +126,34 @@ 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
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -713,7 +713,7 @@ Callbacks = {
|
||||||
div.data("rank", data.rank);
|
div.data("rank", data.rank);
|
||||||
div.data("leader", Boolean(data.leader));
|
div.data("leader", Boolean(data.leader));
|
||||||
div.data("profile", data.profile);
|
div.data("profile", data.profile);
|
||||||
div.data("icon", data.meta.icon);
|
div.data("meta", data.meta);
|
||||||
div.data("afk", data.meta.afk);
|
div.data("afk", data.meta.afk);
|
||||||
formatUserlistItem(div, data);
|
formatUserlistItem(div, data);
|
||||||
addUserDropdown(div, data);
|
addUserDropdown(div, data);
|
||||||
|
|
@ -721,6 +721,15 @@ Callbacks = {
|
||||||
sortUserlist();
|
sortUserlist();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setUserMeta: function (data) {
|
||||||
|
var user = findUserlistItem(data.name);
|
||||||
|
if (user == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
user.data("meta", data);
|
||||||
|
},
|
||||||
|
|
||||||
setUserProfile: function (data) {
|
setUserProfile: function (data) {
|
||||||
var user = findUserlistItem(data.name);
|
var user = findUserlistItem(data.name);
|
||||||
if (user === null)
|
if (user === null)
|
||||||
|
|
@ -978,8 +987,8 @@ Callbacks = {
|
||||||
handleMediaUpdate(data);
|
handleMediaUpdate(data);
|
||||||
},
|
},
|
||||||
|
|
||||||
setPlaylistLocked: function(data) {
|
setPlaylistLocked: function (locked) {
|
||||||
CHANNEL.openqueue = !data.locked;
|
CHANNEL.openqueue = !locked;
|
||||||
handlePermissionChange();
|
handlePermissionChange();
|
||||||
if(CHANNEL.openqueue) {
|
if(CHANNEL.openqueue) {
|
||||||
$("#qlockbtn").removeClass("btn-danger")
|
$("#qlockbtn").removeClass("btn-danger")
|
||||||
|
|
@ -1191,7 +1200,7 @@ Callbacks = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var SOCKET_DEBUG = false;
|
var SOCKET_DEBUG = true;
|
||||||
setupCallbacks = function() {
|
setupCallbacks = function() {
|
||||||
for(var key in Callbacks) {
|
for(var key in Callbacks) {
|
||||||
(function(key) {
|
(function(key) {
|
||||||
|
|
|
||||||
|
|
@ -110,6 +110,15 @@ function formatUserlistItem(div) {
|
||||||
.appendTo(profile);
|
.appendTo(profile);
|
||||||
}
|
}
|
||||||
$("<strong/>").text(data.name).appendTo(profile);
|
$("<strong/>").text(data.name).appendTo(profile);
|
||||||
|
|
||||||
|
var meta = div.data("meta") || {};
|
||||||
|
if (meta.ip) {
|
||||||
|
$("<br/>").appendTo(profile);
|
||||||
|
$("<em/>").text(meta.ip).appendTo(profile);
|
||||||
|
}
|
||||||
|
if (meta.aliases) {
|
||||||
|
$("<p/>").text("aliases: " + meta.aliases.join(", ")).appendTo(profile);
|
||||||
|
}
|
||||||
$("<p/>").text(data.profile.text).appendTo(profile);
|
$("<p/>").text(data.profile.text).appendTo(profile);
|
||||||
});
|
});
|
||||||
name.mousemove(function(ev) {
|
name.mousemove(function(ev) {
|
||||||
|
|
@ -555,7 +564,7 @@ function showUserOptions() {
|
||||||
$("#us-chat-notice").prop("checked", USEROPTS.blink_title);
|
$("#us-chat-notice").prop("checked", USEROPTS.blink_title);
|
||||||
$("#us-boop").prop("checked", USEROPTS.boop);
|
$("#us-boop").prop("checked", USEROPTS.boop);
|
||||||
$("#us-sendbtn").prop("checked", USEROPTS.chatbtn);
|
$("#us-sendbtn").prop("checked", USEROPTS.chatbtn);
|
||||||
|
|
||||||
$("#us-modflair").prop("checked", USEROPTS.modhat);
|
$("#us-modflair").prop("checked", USEROPTS.modhat);
|
||||||
$("#us-joinmessage").prop("checked", USEROPTS.joinmessage);
|
$("#us-joinmessage").prop("checked", USEROPTS.joinmessage);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue