Since the display is not refreshed until the payment finishes, it
is possible to fire off a second payment by double-clicking.
This commit is a simple way to disable the button while a payment is
in process, then enable it again after the display refreshes.
Since the 'sendPayment()' function is wrapped, we may need to move
this logic up, but this being a single promise is simpler, and it
solved the problem in testing.
Signed-off-by: Dan Wells <dbw2@calvin.edu>
Signed-off-by: Jason Stephenson <jason@sigio.com>
<button
type="submit"
class="btn btn-default"
- ng-disabled="invalid_check_number() || !gridControls.selectedItems().length"
+ ng-disabled="invalid_check_number() || !gridControls.selectedItems().length || applyingPayment"
>[% l('Apply Payment') %]</button>
</div>
</div>
// generates payments, collects user note if needed, and sends payment
// to server.
function sendPayment(note, cc_args) {
+ $scope.applyingPayment = true;
var make_payments = generatePayments();
billSvc.applyPayment($scope.payment_type,
make_payments, note, $scope.check_number, cc_args)
console.error('Payment was rejected: ' + msg);
}
)
+ .finally(function() { $scope.applyingPayment = false; })
}
$scope.onReceiptOnPayChanged = function(){