Allow /hidejoins [room] to override /showjoins (#699)

Also merge showjoins and showroomjoins and provide automatic conversion
from the old format to the new one. Additionally, have each server use
their own namespace for showroomjoins.
This commit is contained in:
asgdf
2016-06-04 10:15:51 +02:00
committed by Guangcong Luo
parent 273ad45e8b
commit 10c53c826b
2 changed files with 42 additions and 10 deletions

View File

@@ -561,29 +561,40 @@
return false;
case 'showjoins':
var showjoins = Tools.prefs('showjoins') || {};
var serverShowjoins = showjoins[Config.server.id] || {};
if (target) {
var showJoins = Tools.prefs('showroomjoins') || {};
var room = toId(target);
showJoins[room] = true;
if (serverShowjoins['global']) {
delete serverShowjoins[room];
} else {
serverShowjoins[room] = 1;
}
this.add('Join/leave messages on room ' + room + ': ON');
Tools.prefs('showroomjoins', showJoins);
} else {
serverShowjoins = {global: 1};
this.add('Join/leave messages: ON');
Tools.prefs('showjoins', true);
}
showjoins[Config.server.id] = serverShowjoins;
Tools.prefs('showjoins', showjoins);
return false;
case 'hidejoins':
var showjoins = Tools.prefs('showjoins') || {};
var serverShowjoins = showjoins[Config.server.id] || {};
if (target) {
var showJoins = Tools.prefs('showroomjoins') || {};
var room = toId(target);
delete showJoins[room];
if (!serverShowjoins['global']) {
delete serverShowjoins[room];
} else {
serverShowjoins[room] = 0;
}
this.add('Join/leave messages on room ' + room + ': HIDDEN');
Tools.prefs('showroomjoins', showJoins);
} else {
serverShowjoins = {global: 0};
this.add('Join/leave messages: HIDDEN');
Tools.prefs('showroomjoins', {});
Tools.prefs('showjoins', false);
}
showjoins[Config.server.id] = serverShowjoins;
Tools.prefs('showjoins', showjoins);
return false;
case 'showbattles':
@@ -1298,7 +1309,11 @@
this.userList.add(userid);
return;
}
if (silent && (!Tools.prefs('showroomjoins') || !Tools.prefs('showroomjoins')[this.id]) && !Tools.prefs('showjoins')) return;
var allShowjoins = Tools.prefs('showjoins') || {};
var showjoins = allShowjoins[Config.server.id];
if (silent && (!showjoins || (!showjoins['global'] && !showjoins[this.id]) || showjoins[this.id] === 0)) {
return;
}
if (!this.$joinLeave) {
this.$chat.append('<div class="message"><small>Loading...</small></div>');
this.$joinLeave = this.$chat.children().last();

View File

@@ -241,6 +241,23 @@ Storage.whenPrefsLoaded = Tools.makeLoadTracker();
Storage.whenTeamsLoaded = Tools.makeLoadTracker();
Storage.whenAppLoaded = Tools.makeLoadTracker();
var convertShowjoins = function () {
var oldShowjoins = Storage.prefs('showjoins');
if (typeof oldShowjoins === 'undefined') return;
if (typeof oldShowjoins !== 'object') {
var showjoins = {};
var serverShowjoins = {global: (oldShowjoins ? 1 : 0)};
var showroomjoins = Storage.prefs('showroomjoins');
for (var roomid in showroomjoins) {
serverShowjoins[roomid] = (showroomjoins[roomid] ? 1 : 0);
}
Storage.prefs('showroomjoins', null);
showjoins[Config.server.id] = serverShowjoins;
Storage.prefs('showjoins', showjoins, true);
}
};
Storage.whenPrefsLoaded(convertShowjoins);
Storage.initPrefs = function () {
Storage.loadTeams();
if (Config.testclient) {