From 9a9be7b0b7491b0a7c13ebe13bdf54159bf569d0 Mon Sep 17 00:00:00 2001 From: Joren Van Onder Date: Tue, 20 Oct 2020 21:07:35 +0000 Subject: [PATCH] [FIX] payment_authorize: make it possible to pay after closing popup Closing the Authorize.net popup with the little "x" doesn't call the responseHandler. Looking at the documentation (and source) of AcceptUI.js it seems there's no clean way to detect this. Because of this the "Pay & Confirm" button remains disabled, requiring the user to refresh the page. To solve this don't disable the button at all. Presumably it was added to avoid issues when spamming the button with clicks on a slow connection. But simulating this with a slow connection doesn't cause any issues. When AcceptJS is not yet loaded it's loaded with web.ajax.loadJS(). It correctly handles parallel calls before loading is finished and returns the same promise. AcceptJS correctly ignores subsequent click events on the button, because it immediately blocks all clicks on the body (and grays it out). Using a MutationObserver was also considered but this approach is much less messy. opw-2367166 closes odoo/odoo#60870 X-original-commit: 63f759b63284efc5fb9f5dc7dfbe4e2aed982ad0 Signed-off-by: jorenvo --- addons/payment_authorize/static/src/js/payment_form.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/addons/payment_authorize/static/src/js/payment_form.js b/addons/payment_authorize/static/src/js/payment_form.js index 06a74af31ed..54007ce4cc2 100644 --- a/addons/payment_authorize/static/src/js/payment_form.js +++ b/addons/payment_authorize/static/src/js/payment_form.js @@ -45,7 +45,6 @@ PaymentForm.include({ } else { var button = ev.target; } - this.disableButton(button); var acquirerID = this.getAcquirerIdFromRadio($checkedRadio); var acquirerForm = this.$('#o_payment_add_token_acq_' + acquirerID); var inputsForm = $('input', acquirerForm); @@ -69,7 +68,6 @@ PaymentForm.include({ errorMessage += message.code + ": " + message.text; }) acquirerForm.removeClass('d-none'); - self.enableButton(button); return self.displayError(_t('Server Error'), errorMessage); } @@ -91,7 +89,6 @@ PaymentForm.include({ // if the rpc fails, pretty obvious error.event.preventDefault(); acquirerForm.removeClass('d-none'); - self.enableButton(button); self.displayError( _t('Server Error'), _t("We are not able to add your payment method at the moment.") +