From 60072f6ac8a01bed9fde0f534353f2549d373396 Mon Sep 17 00:00:00 2001 From: Kronogenics <33591724+Kronogenics@users.noreply.github.com> Date: Mon, 29 Nov 2021 21:43:45 -0500 Subject: [PATCH] Fix plugin Seems that when melting too quickly you get stuck with an "invalid password" response. This makes the requests sequential, and makes sure that all errors are properly displayed. It also allows for mixed results (fails and successes) with some explanation at what failed, and what succeeded. --- web_resources/HangarXPLOR.BulkUI.js | 69 +++++++++++++++++------------ 1 file changed, 40 insertions(+), 29 deletions(-) diff --git a/web_resources/HangarXPLOR.BulkUI.js b/web_resources/HangarXPLOR.BulkUI.js index 51b20da..7f3d63d 100644 --- a/web_resources/HangarXPLOR.BulkUI.js +++ b/web_resources/HangarXPLOR.BulkUI.js @@ -9,71 +9,82 @@ HangarXPLOR._callbacks.Gift = function(e) { window.alert('Coming Soon') } HangarXPLOR._callbacks.GiftConfirm = function(e) { window.alert('Coming Soon') } -HangarXPLOR._callbacks.Melt = function(e) { +HangarXPLOR._callbacks.Melt = function(e) { e.preventDefault(); window.Main.closeModal(); - + var data = { item_price: '$' + HangarXPLOR._selectedMelt.toLocaleString('en-US', {minimumFractionDigits: 2}), item_name: HangarXPLOR._meltable.length + ' Ships', items: HangarXPLOR._meltable, }; - + HangarXPLOR.BulkUI.modal = new RSI.Lightbox({ content: window.Main.renderTemplate("#tpl_reclaim_bulk", data), class_name: 'modals', noclose_btn: true }); - + HangarXPLOR.BulkUI.modal.holder.find(".panes").css({ left: '-535px' }); - + $(document).on('submit', 'form[name=reclaim-bulk]', HangarXPLOR._callbacks.MeltConfirm); - + HangarXPLOR.BulkUI.modal.fadeIn(300); } HangarXPLOR._callbacks.MeltConfirm = function(e) { e.preventDefault(); - var totalCallbacks = 0; + var totalCallbacks = HangarXPLOR._selected.length; var totalSuccess = 0; + var totalError = 0; var totalMelt = 0; + var melted = ''; var errors = ''; - - $(HangarXPLOR._selected).each(function() { - totalCallbacks++; - var pledge = this; + + $('#reclaim .panes').hide(); + + meltNext() + + function meltNext() { + var pledge = HangarXPLOR._selected[totalCallbacks - 1] + $.ajax({ url: '/api/account/reclaimPledge', method: 'POST', data: { - current_password: hex_md5($('input[name=current_password]', HangarXPLOR.BulkUI.modal.holder).val()), + current_password: $('input[name=current_password]', HangarXPLOR.BulkUI.modal.holder).val(), pledge_id: pledge.pledgeId - }, + }, headers: { 'X-Rsi-Token': $.cookie('Rsi-Token') }, success: function(result) { if (result.success) { totalSuccess++; totalMelt += pledge.meltValue; + melted += '
  • ' + pledge.originalName + ' - ' + pledge.meltValue + '
  • '; } else { - errors += '
  • ' + result.msg + '
  • '; + totalError++; + errors += '
  • ' + pledge.originalName + ' - ' + result.msg + '
  • '; } - - if (--totalCallbacks <= 0) { - if (totalSuccess > 0) { - $('#reclaim .panes').hide(); - $('#reclaim .js-error-message').hide(); - $('#reclaim .js-success-message').html("Your Store ledger was credited with $" + totalMelt.toLocaleString('en-US', {minimumFractionDigits: 2}) + "").fadeIn(300); - setTimeout(function() { document.location.reload() }, 5000); - HangarXPLOR.BulkUI.modal.resizeCurrent(); - } else { - $('#reclaim .panes').hide(); - $('#reclaim .js-error-message').html('There were errors completing your request. ').fadeIn(300); - setTimeout(function() { document.location.reload() }, 5000); - HangarXPLOR.BulkUI.modal.resizeCurrent(); - } + + if (--totalCallbacks > 0) { + meltNext(); + } else { + setTimeout(function() { document.location.reload() }, 5000); } + + if (totalSuccess > 0) { + $('#reclaim .js-success-message').html("Your Store ledger was credited with $" + totalMelt.toLocaleString('en-US', {minimumFractionDigits: 2}) + "" + '').fadeIn(300); + } + + if (totalError > 0) { + $('#reclaim .js-error-message').html('There were errors completing your request. ').fadeIn(300); + } else { + $('#reclaim .js-error-message').hide(); + } + + HangarXPLOR.BulkUI.modal.resizeCurrent(); } }); - }); + } }