document.addEventListener(
    'DOMContentLoaded',
    () => {
        const config = PayPalCommerceGatewayClearDb;
        if (!typeof (config)) {
            return;
        }

        const clearDbConfig = config.clearDb;

        document.querySelector(clearDbConfig.button)?.addEventListener('click', function () {
            const isConfirmed = confirm(clearDbConfig.confirmationMessage);
            if (!isConfirmed) {
                return;
            }

            const clearButton = document.querySelector(clearDbConfig.button);

            clearButton.setAttribute('disabled', 'disabled');
            fetch(clearDbConfig.endpoint, {
                method: 'POST',
                credentials: 'same-origin',
                body: JSON.stringify({
                    nonce: clearDbConfig.nonce,
                })
            }).then((res)=>{
                return res.json();
            }).then((data)=>{
                if (!data.success) {
                    jQuery(clearDbConfig.failureMessage).insertAfter(clearButton);
                    setTimeout(()=> jQuery(clearDbConfig.messageSelector).remove(),3000);
                    clearButton.removeAttribute('disabled');
                    throw Error(data.data.message);
                }

                jQuery(clearDbConfig.successMessage).insertAfter(clearButton);
                setTimeout(()=> jQuery(clearDbConfig.messageSelector).remove(),3000);
                clearButton.removeAttribute('disabled');
                window.location.replace(clearDbConfig.redirectUrl);
            });
        })
    },
);
