From 3c1c596a6a2471573e3c8b2e6fa2b6e488692feb Mon Sep 17 00:00:00 2001 From: Morgan Jones Date: Mon, 4 Mar 2013 15:55:01 -0600 Subject: [PATCH] * Add detailed error messages for redemption errors (including rate-limiting, which happens sometimes). * Reverse XMPs and resonators in redemption display --- code/redeeming.js | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/code/redeeming.js b/code/redeeming.js index 51a126dc..12bc5e32 100644 --- a/code/redeeming.js +++ b/code/redeeming.js @@ -12,12 +12,12 @@ window.handleRedeemResponse = function(data, textStatus, jqXHR) { } else if (data.error === 'INVALID_PASSCODE') { error = 'This passcode is invalid.'; } else { - error = 'The passcode cannot be redeemed.'; + error = 'There was a problem redeeming the passcode. Try again?'; } - alert("Error: " + data.error + "\n" + error); + alert('' + data.error + "\n" + error); } else if (data.result) { - var res_level = 0, res_count = 0; var xmp_level = 0, xmp_count = 0; + var res_level = 0, res_count = 0; var shield_rarity = '', shield_count = 0; // This assumes that each passcode gives only one type of resonator/XMP/shield. @@ -30,17 +30,17 @@ window.handleRedeemResponse = function(data, textStatus, jqXHR) { shield_count++; } } else if (acquired.resourceWithLevels) { - if (acquired.resourceWithLevels.resourceType === 'EMITTER_A') { - res_level = acquired.resourceWithLevels.level; - res_count++; - } else if (acquired.resourceWithLevels.resourceType === 'EMP_BURSTER') { + if (acquired.resourceWithLevels.resourceType === 'EMP_BURSTER') { xmp_level = acquired.resourceWithLevels.level; xmp_count++; + } else if (acquired.resourceWithLevels.resourceType === 'EMITTER_A') { + res_level = acquired.resourceWithLevels.level; + res_count++; } } } - alert("Passcode redeemed!\n" + [data.result.apAward + 'AP', data.result.xmAward + 'XM', res_count + 'xL' + res_level + ' RES', xmp_count + 'xL' + xmp_level + ' XMP', shield_count + 'x' + shield_rarity + ' SHIELD'].join('/')); + alert("Passcode accepted!\n" + [data.result.apAward + 'AP', data.result.xmAward + 'XM', xmp_count + 'xL' + xmp_level + ' XMP', res_count + 'xL' + res_level + ' RES', shield_count + 'x' + shield_rarity + ' SH'].join('/')); } } @@ -49,6 +49,19 @@ window.setupRedeem = function() { if((e.keyCode ? e.keyCode : e.which) != 13) return; var data = {passcode: $(this).val()}; window.postAjax('redeemReward', data, window.handleRedeemResponse, - function() { alert('The HTTP request failed. Either your code is invalid or their servers are down. No way to tell.'); }); + function(response) { + var extra = ''; + if (response && response.status) { + if (response.status === 429) { + extra = "You have been rate-limited by the server. Wait a bit and try again."; + } else { + extra = "The server indicated an error."; + } + extra += "\n" + 'Response: HTTP ' + jq.status + "."; + } else { + extra = "No status code was returned."; + } + alert('The HTTP request failed. ' + extra); + }); }); }