diff --git a/code/boot.js b/code/boot.js index c2635a0a..dfaf676f 100644 --- a/code/boot.js +++ b/code/boot.js @@ -389,6 +389,9 @@ window.setupPlayerStat = function() { var level = PLAYER.verified_level; PLAYER.level = level; //for historical reasons IITC expects PLAYER.level to contain the current player level + var n = window.PLAYER.nickname; + PLAYER.nickMatcher = new RegExp('\\b('+n+')\\b', 'ig'); + var ap = parseInt(PLAYER.ap); var thisLvlAp = parseInt(PLAYER.min_ap_for_current_level); var nextLvlAp = parseInt(PLAYER.min_ap_for_next_level); @@ -601,10 +604,6 @@ function boot() { } urlPortal = getURLParam('pguid'); - // load only once - var n = window.PLAYER['nickname']; - window.PLAYER['nickMatcher'] = new RegExp('\\b('+n+')\\b', 'ig'); - $('#sidebar').show(); if(window.bootPlugins) { @@ -654,7 +653,7 @@ function boot() { window.runOnSmartphonesAfterBoot(); // workaround for #129. Not sure why this is required. -// setTimeout('window.map.invalidateSize(false);', 500); + // setTimeout('window.map.invalidateSize(false);', 500); window.iitcLoaded = true; window.runHooks('iitcLoaded'); diff --git a/code/redeeming.js b/code/redeeming.js index 9ed5789f..bdc929d2 100644 --- a/code/redeeming.js +++ b/code/redeeming.js @@ -1,8 +1,6 @@ // REDEEMING /////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// -// TODO remove lots of unused code from the old redeeming method - window.REDEEM_SHORT_NAMES = { 'portal shield':'S', 'force amp':'FA', @@ -27,15 +25,29 @@ window.REDEEM_STATUSES = { }; window.handleRedeemResponse = function(data, textStatus, jqXHR) { - var passcode = this.passcode; + var passcode = jqXHR.passcode; if(data.error) { + console.error('Error redeeming passcode "'+passcode+'": ' + data.error) dialog({ title: 'Error: ' + passcode, html: '' + data.error + '' }); return; } + if(!data.rewards) { + console.error('Error redeeming passcode "'+passcode+'": ', data) + dialog({ + title: 'Error: ' + passcode, + html: 'An unexpected error occured' + }); + return; + } + + if(data.playerData) { + window.PLAYER = data.playerData; + window.setupPlayerStat(); + } var format = "long"; try { @@ -49,9 +61,8 @@ window.handleRedeemResponse = function(data, textStatus, jqXHR) { if(!formatHandlers[format]) format = "long"; - var html = formatHandlers[format](data); + var html = formatHandlers[format](data.rewards); - var that = this; var buttons = {}; Object.keys(formatHandlers).forEach(function(label) { if(label == format) return; @@ -59,7 +70,7 @@ window.handleRedeemResponse = function(data, textStatus, jqXHR) { buttons[label.toUpperCase()] = function() { $(this).dialog("close"); localStorage["iitc-passcode-format"] = label; - handleRedeemResponse.call(that, data, textStatus, jqXHR); + handleRedeemResponse(data, textStatus, jqXHR); } }); @@ -154,21 +165,23 @@ window.formatPasscodeShort = function(data) { window.setupRedeem = function() { $("#redeem").keypress(function(e) { - if((e.keyCode ? e.keyCode : e.which) !== 13 || !$(this).val()) return; - var data = {passcode: $(this).val()}; + if((e.keyCode ? e.keyCode : e.which) !== 13) return; - window.postAjax('redeemReward', data, window.handleRedeemResponse, - function(response) { - var extra = ''; - if(response.status) { - extra = (window.REDEEM_STATUSES[response.status] || 'The server indicated an error.') + ' (HTTP ' + response.status + ')'; - } else { - extra = 'No status code was returned.'; - } - dialog({ - title: 'Request failed: ' + data.passcode, - html: 'The HTTP request failed. ' + extra - }); + var passcode = $(this).val(); + if(!passcode) return; + + var jqXHR = window.postAjax('redeemReward', {passcode:passcode}, window.handleRedeemResponse, function(response) { + var extra = ''; + if(response.status) { + extra = (window.REDEEM_STATUSES[response.status] || 'The server indicated an error.') + ' (HTTP ' + response.status + ')'; + } else { + extra = 'No status code was returned.'; + } + dialog({ + title: 'Request failed: ' + data.passcode, + html: 'The HTTP request failed. ' + extra }); + }); + jqXHR.passcode = passcode; }); };