/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
define([
    'uiComponent',
    'jquery',
    'Magento_Paypal/js/in-context/express-checkout-wrapper',
    'Magento_Customer/js/customer-data'
], function (Component, $, Wrapper, customerData) {
    'use strict';

    return Component.extend(Wrapper).extend({
        defaults: {
            declinePayment: false
        },

        /** @inheritdoc */
        initialize: function (config, element) {
            var cart = customerData.get('cart'),
                customer = customerData.get('customer');

            this._super();
            this.renderPayPalButtons(element);
            this.declinePayment = !customer().firstname && !cart().isGuestCheckoutAllowed;

            return this;
        },

        /** @inheritdoc */
        beforePayment: function (resolve, reject) {
            var promise = $.Deferred();

            if (this.declinePayment) {
                this.addError(this.signInMessage, 'warning');

                reject();
            } else {
                promise.resolve();
            }

            return promise;
        },

        /** @inheritdoc */
        prepareClientConfig: function () {
            this._super();
            this.clientConfig.commit = false;

            return this.clientConfig;
        }
    });
});
