/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
define([
    'jquery',
    'Magento_Checkout/js/model/payment/additional-validators'
], function ($, additionalValidators) {
    'use strict';

    return function (originalComponent) {
        return originalComponent.extend({
            /**
             * Initializes reCaptcha
             */
            placeOrder: function () {
                var original = this._super.bind(this),
                    isEnabledForPaypal = window.checkoutConfig['msp_recaptcha'].enabled['paypal'],
                    paymentFormSelector = $('#co-payment-form'),
                    startEvent = 'captcha:startExecute',
                    endEvent = 'captcha:endExecute';

                if (!this.validateHandler() || !additionalValidators.validate() || !isEnabledForPaypal) {
                    return original();
                }

                paymentFormSelector.off(endEvent).on(endEvent, function () {
                        original();
                        paymentFormSelector.off(endEvent);
                    }
                );

                paymentFormSelector.trigger(startEvent);
            }
        });
    };
});