mirror of https://github.com/calzoneman/sync.git
Add strict type checking to channel options
This commit is contained in:
parent
873330e991
commit
3f1e665922
103
lib/channel.js
103
lib/channel.js
|
@ -2120,39 +2120,82 @@ Channel.prototype.tryUpdateOptions = function(user, data) {
|
|||
show_public: true
|
||||
};
|
||||
|
||||
if ("afk_timeout" in data) {
|
||||
data.afk_timeout = parseInt(data.afk_timeout);
|
||||
if (isNaN(data.afk_timeout) || data.afk_timeout < 0)
|
||||
data.afk_timeout = 0;
|
||||
if ("allow_voteskip" in data) {
|
||||
var vs = Boolean(data.allow_voteskip);
|
||||
this.opts.voteskip = vs;
|
||||
}
|
||||
|
||||
for(var key in this.opts) {
|
||||
if(key in data) {
|
||||
if(key in adminonly && user.rank < 3) {
|
||||
continue;
|
||||
}
|
||||
if (key === "chat_antiflood_params") {
|
||||
var b = parseInt(data[key].burst);
|
||||
if (isNaN(b) || b < 0)
|
||||
b = 1;
|
||||
var s = parseFloat(data[key].sustained);
|
||||
if (isNaN(s) || s <= 0)
|
||||
s = 1;
|
||||
var c = b / s;
|
||||
this.opts.chat_antiflood_params.burst = b;
|
||||
this.opts.chat_antiflood_params.sustained = s;
|
||||
this.opts.chat_antiflood_params.cooldown = c;
|
||||
continue;
|
||||
}
|
||||
if(key === "afk_timeout" && this.opts[key] != data[key]) {
|
||||
console.log(typeof data[key], data[key]);
|
||||
this.opts[key] = data[key];
|
||||
this.users.forEach(function (u) {
|
||||
u.autoAFK();
|
||||
});
|
||||
}
|
||||
this.opts[key] = data[key];
|
||||
if ("voteskip_ratio" in data) {
|
||||
var ratio = parseFloat(data.voteskip_ratio);
|
||||
if (isNaN(ratio) || ratio < 0) {
|
||||
ratio = 0;
|
||||
}
|
||||
this.opts.voteskip_ratio = ratio;
|
||||
}
|
||||
|
||||
if ("afk_timeout" in data) {
|
||||
var tm = parseInt(data.afk_timeout);
|
||||
if (isNaN(tm) || tm < 0) {
|
||||
tm = 0;
|
||||
}
|
||||
var same = tm == this.opts.afk_timeout;
|
||||
this.opts.afk_timeout = tm;
|
||||
if (!same) {
|
||||
this.users.forEach(function (u) {
|
||||
u.autoAFK();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if ("pagetitle" in data && user.rank >= 3) {
|
||||
this.opts.pagetitle = ""+data.pagetitle;
|
||||
}
|
||||
|
||||
if ("maxlength" in data) {
|
||||
var ml = parseInt(data.maxlength);
|
||||
if (isNaN(ml) || ml < 0) {
|
||||
ml = 0;
|
||||
}
|
||||
this.opts.maxlength = ml;
|
||||
}
|
||||
|
||||
if ("externalcss" in data && user.rank >= 3) {
|
||||
this.opts.externalcss = ""+data.externalcss;
|
||||
}
|
||||
|
||||
if ("externaljs" in data && user.rank >= 3) {
|
||||
this.opts.externaljs = ""+data.externaljs;
|
||||
}
|
||||
|
||||
if ("chat_antiflood" in data) {
|
||||
this.opts.chat_antiflood = Boolean(data.chat_antiflood);
|
||||
}
|
||||
|
||||
if ("chat_antiflood_params" in data) {
|
||||
if (typeof data.chat_antiflood_params !== "object") {
|
||||
data.chat_antiflood_params = {
|
||||
burst: 4,
|
||||
sustained: 1
|
||||
};
|
||||
}
|
||||
var b = parseInt(data.chat_antiflood_params.burst);
|
||||
if (isNaN(b) || b < 0)
|
||||
b = 1;
|
||||
var s = parseFloat(data.chat_antiflood_params.sustained);
|
||||
if (isNaN(s) || s <= 0)
|
||||
s = 1;
|
||||
var c = b / s;
|
||||
this.opts.chat_antiflood_params.burst = b;
|
||||
this.opts.chat_antiflood_params.sustained = s;
|
||||
this.opts.chat_antiflood_params.cooldown = c;
|
||||
}
|
||||
|
||||
if ("show_public" in data && user.rank >= 3) {
|
||||
this.opts.show_public = Boolean(data.show_public);
|
||||
}
|
||||
|
||||
if ("enable_link_regex" in data) {
|
||||
this.opts.enable_link_regex = Boolean(data.enable_link_regex);
|
||||
}
|
||||
|
||||
this.logger.log("%%% " + user.name + " updated channel options");
|
||||
|
|
Loading…
Reference in New Issue