Skip to content

Commit

Permalink
Autojoin support for side servers (smogon#851)
Browse files Browse the repository at this point in the history
  • Loading branch information
HoeenCoder authored and Zarel committed Jan 27, 2017
1 parent 637a8f9 commit d02659f
Showing 1 changed file with 47 additions and 9 deletions.
56 changes: 47 additions & 9 deletions js/client.js
Original file line number Diff line number Diff line change
Expand Up @@ -374,24 +374,35 @@
this.topbar = new Topbar({el: $('#header')});
if (this.down) {
this.isDisconnected = true;
} else if (document.location.hostname === 'play.pokemonshowdown.com' || Config.testclient) {
this.addRoom('rooms', null, true);
} else {
if (document.location.hostname === 'play.pokemonshowdown.com' || Config.testclient) {
this.addRoom('rooms', null, true);
} else {
this.addRoom('lobby', null, true);
}
Storage.whenPrefsLoaded(function () {
if (!Config.server.registered) return;
var autojoin = (Tools.prefs('autojoin') || '');
var autojoinIds = [];
if (typeof autojoin === 'string') {
// Use the existing autojoin string for showdown, and an empty string for other servers.
if (Config.server.id !== 'showdown') autojoin = '';
} else {
// If there is not autojoin data for this server, use a empty string.
autojoin = autojoin[Config.server.id] || '';
}
if (autojoin) {
var autojoins = autojoin.split(',');
for (var i = 0; i < autojoins.length; i++) {
var roomid = toRoomid(autojoins[i]);
app.addRoom(roomid, null, true, autojoins[i]);
if (roomid !== 'staff' && roomid !== 'upperstaff') autojoinIds.push(roomid);
if (roomid === 'staff' || roomid === 'upperstaff') continue;
if (Config.server.id !== 'showdown' && roomid === 'lobby') continue;
autojoinIds.push(roomid);
}
}
app.send('/autojoin ' + autojoinIds.join(','));
});
} else {
this.addRoom('lobby', null, true);
this.send('/autojoin');
}

var self = this;
Expand Down Expand Up @@ -1640,19 +1651,46 @@
document.title = room.title ? room.title + " - Showdown!" : "Showdown!";
},
updateAutojoin: function () {
if (Config.server.id !== 'showdown') return;
if (!Config.server.registered) return;
var autojoins = [];
var autojoinCount = 0;
var rooms = this.roomList.concat(this.sideRoomList);
for (var i = 0; i < rooms.length; i++) {
var room = rooms[i];
if (room.type !== 'chat') continue;
autojoins.push(room.id.indexOf('-') >= 0 ? room.id : (room.title || room.id));
if (room.id === 'staff' || room.id === 'upperstaff') continue;
if (room.id === 'staff' || room.id === 'upperstaff' || (Config.server.id !== 'showdown' && room.id === 'lobby')) continue;
autojoinCount++;
if (autojoinCount >= 10) break;
}
Tools.prefs('autojoin', autojoins.join(','));
var curAutojoin = (Tools.prefs('autojoin') || '');
if (typeof curAutojoin !== 'string') {
if (curAutojoin[Config.server.id] === autojoins.join(',')) return;
if (!autojoins.length) {
delete curAutojoin[Config.server.id];
// If the only key left is 'showdown', revert to the string method for storing autojoin.
var hasSideServer = false;
for (var key in curAutojoin) {
if (key === 'showdown') continue;
hasSideServer = true;
break;
}
if (!hasSideServer) curAutojoin = curAutojoin.showdown || '';
} else {
curAutojoin[Config.server.id] = autojoins.join(',');
}
} else {
if (Config.server.id !== 'showdown') {
// Switch to the autojoin object to handle multiple servers
curAutojoin = {showdown: curAutojoin};
if (!autojoins.length) return;
curAutojoin[Config.server.id] = autojoins.join(',');
} else {
if (curAutojoin === autojoins.join(',')) return;
curAutojoin = autojoins.join(',');
}
}
Tools.prefs('autojoin', curAutojoin);
},

/*********************************************************
Expand Down

0 comments on commit d02659f

Please sign in to comment.