mirror of https://github.com/calzoneman/sync.git
Merge pull request #684 from Xaekai/afk.meta
Single source of truth for AFK
This commit is contained in:
commit
33f632036e
|
@ -417,6 +417,12 @@ Channel.prototype.acceptUser = function (user) {
|
|||
if (!this.is(Flags.C_REGISTERED)) {
|
||||
user.socket.emit("channelNotRegistered");
|
||||
}
|
||||
|
||||
user.on('afk', function(afk){
|
||||
self.sendUserMeta(self.users, user, -1);
|
||||
// TODO: Drop legacy setAFK frame after a few months
|
||||
self.broadcastAll("setAFK", { name: user.getName(), afk: afk });
|
||||
})
|
||||
};
|
||||
|
||||
Channel.prototype.partUser = function (user) {
|
||||
|
|
|
@ -226,10 +226,7 @@ User.prototype.setAFK = function (afk) {
|
|||
this.channel.modules.voteskip.update();
|
||||
}
|
||||
|
||||
this.channel.broadcastAll("setAFK", {
|
||||
name: this.getName(),
|
||||
afk: afk
|
||||
});
|
||||
this.emit('afk', afk);
|
||||
};
|
||||
|
||||
/* Automatically tag a user as AFK after a period of inactivity */
|
||||
|
@ -424,7 +421,7 @@ User.prototype.getFirstSeenTime = function getFirstSeenTime() {
|
|||
return this.socket.ipSessionFirstSeen.getTime();
|
||||
} else {
|
||||
LOGGER.error(`User "${this.getName()}" (IP: ${this.realip}) has neither ` +
|
||||
"an IP sesion first seen time nor a registered account.");
|
||||
"an IP session first seen time nor a registered account.");
|
||||
return Date.now();
|
||||
}
|
||||
};
|
||||
|
|
|
@ -490,13 +490,12 @@ Callbacks = {
|
|||
div.data("leader", Boolean(data.leader));
|
||||
div.data("profile", data.profile);
|
||||
div.data("meta", data.meta);
|
||||
div.data("afk", data.meta.afk);
|
||||
if (data.meta.muted || data.meta.smuted) {
|
||||
div.data("icon", "glyphicon-volume-off");
|
||||
} else {
|
||||
div.data("icon", false);
|
||||
}
|
||||
formatUserlistItem(div, data);
|
||||
formatUserlistItem(div);
|
||||
addUserDropdown(div, data);
|
||||
div.appendTo($("#userlist"));
|
||||
sortUserlist();
|
||||
|
@ -515,11 +514,24 @@ Callbacks = {
|
|||
user.data("icon", false);
|
||||
}
|
||||
|
||||
/*
|
||||
* 2017-06-15
|
||||
* TODO: Remove this and the empty function below
|
||||
* after script authors have had ample time to update
|
||||
*/
|
||||
socket.listeners('setAFK').forEach(function(listener){
|
||||
listener(data.meta.afk);
|
||||
});
|
||||
|
||||
formatUserlistItem(user, data);
|
||||
addUserDropdown(user, data);
|
||||
sortUserlist();
|
||||
},
|
||||
|
||||
setAFK: function() {
|
||||
return true;
|
||||
},
|
||||
|
||||
setUserProfile: function (data) {
|
||||
var user = findUserlistItem(data.name);
|
||||
if (user === null)
|
||||
|
@ -610,16 +622,6 @@ Callbacks = {
|
|||
formatUserlistItem(user);
|
||||
},
|
||||
|
||||
setAFK: function (data) {
|
||||
var user = findUserlistItem(data.name);
|
||||
if(user === null)
|
||||
return;
|
||||
user.data("afk", data.afk);
|
||||
formatUserlistItem(user);
|
||||
if(USEROPTS.sort_afk)
|
||||
sortUserlist();
|
||||
},
|
||||
|
||||
userLeave: function(data) {
|
||||
var user = findUserlistItem(data.name);
|
||||
if(user !== null)
|
||||
|
|
|
@ -87,7 +87,6 @@ function formatUserlistItem(div) {
|
|||
profile: div.data("profile") || { image: "", text: ""},
|
||||
leader: div.data("leader") || false,
|
||||
icon: div.data("icon") || false,
|
||||
afk: div.data("afk") || false
|
||||
};
|
||||
var name = $(div.children()[1]);
|
||||
name.removeClass();
|
||||
|
@ -95,19 +94,20 @@ function formatUserlistItem(div) {
|
|||
name.addClass(getNameColor(data.rank));
|
||||
div.find(".profile-box").remove();
|
||||
|
||||
if (data.afk) {
|
||||
var meta = div.data().meta || {}; // Not sure how this could happen.
|
||||
if (meta.afk) {
|
||||
div.addClass("userlist_afk");
|
||||
} else {
|
||||
div.removeClass("userlist_afk");
|
||||
}
|
||||
|
||||
if (div.data("meta") && div.data("meta").muted) {
|
||||
if (meta.muted) {
|
||||
div.addClass("userlist_muted");
|
||||
} else {
|
||||
div.removeClass("userlist_muted");
|
||||
}
|
||||
|
||||
if (div.data("meta") && div.data("meta").smuted) {
|
||||
if (meta.smuted) {
|
||||
div.addClass("userlist_smuted");
|
||||
} else {
|
||||
div.removeClass("userlist_smuted");
|
||||
|
@ -173,7 +173,7 @@ function formatUserlistItem(div) {
|
|||
if(data.leader) {
|
||||
$("<span/>").addClass("glyphicon glyphicon-star-empty").appendTo(icon);
|
||||
}
|
||||
if(data.afk) {
|
||||
if(div.data().meta.afk) {
|
||||
name.css("font-style", "italic");
|
||||
$("<span/>").addClass("glyphicon glyphicon-time").appendTo(icon);
|
||||
}
|
||||
|
@ -398,7 +398,7 @@ function calcUserBreakdown() {
|
|||
|
||||
total++;
|
||||
|
||||
if($(item).data("afk"))
|
||||
if($(item).data().meta.afk)
|
||||
breakdown["AFK"]++;
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue