diff --git a/js/client-chat.js b/js/client-chat.js index 043298660..fe750ba60 100644 --- a/js/client-chat.js +++ b/js/client-chat.js @@ -393,6 +393,15 @@ switch (cmd.toLowerCase()) { case 'challenge': + var targets = target.split(',').map($.trim); + + if (!targets[0]) targets[0] = prompt('Who?'); + target = toId(targets[0]); + this.challengeData = { userid: target, format: targets[1] || '', team: targets[2] || '' }; + app.on('response:userdetails', this.challengeUserdetails, this); + app.send('/cmd userdetails '+target); + return false; + case 'user': case 'open': if (!target) target = prompt('Who?'); @@ -601,6 +610,24 @@ } return text; + }, + + challengeData: {}, + challengeUserdetails: function (data) { + app.off('response:userdetails', this.challengeUserdetails); + + if (!data || this.challengeData.userid !== data.userid) return; + + if (data.rooms === false) { + this.add('This player does not exist or is not online.'); + return; + } + + app.rooms[''].requestNotifications(); + app.focusRoom(''); + var name = data.name || this.challengeData.userid; + if (/^[a-z0-9]/i.test(name)) name = ' ' + name; + app.rooms[''].challenge(name, this.challengeData.format, this.challengeData.team); } }); diff --git a/js/client-mainmenu.js b/js/client-mainmenu.js index f6d39d64e..9e0077879 100644 --- a/js/client-mainmenu.js +++ b/js/client-mainmenu.js @@ -253,7 +253,7 @@ }, clickUsername: function(e) { e.stopPropagation(); - var name = $(e.currentTarget).data('name'); + var name = $(e.currentTarget).data('name');console.log("HAHAHAHAHA", name); app.addPopup(UserPopup, {name: name, sourceEl: e.currentTarget}); }, clickPMBackground: function(e) { @@ -420,16 +420,29 @@ }, // challenge buttons - challenge: function(name) { + challenge: function(name, format, team) { var userid = toId(name); var $challenge = this.$('.pm-window-'+userid+' .challenge'); if ($challenge.length && !$challenge.find('button[name=dismissChallenge]').length) { return; } + + if (format) format = toId(format); + var teamIndex = undefined; + if (Storage.teams && team) { + var team = toId(team); + for (var i = 0; i < Storage.teams.length; i++) { + if (team === toId(Storage.teams[i].name || '')) { + teamIndex = i; + break; + } + } + } + $challenge = this.openChallenge(name); var buf = '
'; $challenge.html(buf); },