HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux wordpress-ubuntu-s-2vcpu-4gb-fra1-01 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64
User: root (0)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/shoetique/wp-content/plugins/facebook-for-woocommerce/assets/js/admin/whatsapp-events.js
/**
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
 *
 * This source code is licensed under the license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @package FacebookCommerce
 */

jQuery(document).ready(function ($) {
    // Set Event Status for Order Placed
    var orderPlacedActiveStatus = $('#order-placed-active-status');
    var orderPlacedInactiveStatus = $('#order-placed-inactive-status');
    if (facebook_for_woocommerce_whatsapp_events.order_placed_enabled) {
        orderPlacedInactiveStatus.hide();
        orderPlacedActiveStatus.show();
    }
    else {
        orderPlacedActiveStatus.hide();
        orderPlacedInactiveStatus.show();
    }

    // Set Event Status for Order FulFilled
    var orderFulfilledActiveStatus = $('#order-fulfilled-active-status');
    var orderFulfilledInactiveStatus = $('#order-fulfilled-inactive-status');
    if (facebook_for_woocommerce_whatsapp_events.order_fulfilled_enabled) {
        orderFulfilledInactiveStatus.hide();
        orderFulfilledActiveStatus.show();
    }
    else {
        orderFulfilledActiveStatus.hide();
        orderFulfilledInactiveStatus.show();
    }

    // Set Event Status for Order Refunded
    var orderRefundedActiveStatus = $('#order-refunded-active-status');
    var orderRefundedInactiveStatus = $('#order-refunded-inactive-status');
    if (facebook_for_woocommerce_whatsapp_events.order_refunded_enabled) {
        orderRefundedInactiveStatus.hide();
        orderRefundedActiveStatus.show();
    }
    else {
        orderRefundedActiveStatus.hide();
        orderRefundedInactiveStatus.show();
    }

    $('#woocommerce-whatsapp-manage-order-placed, #woocommerce-whatsapp-manage-order-fulfilled, #woocommerce-whatsapp-manage-order-refunded').click(function (event) {
        var clickedButtonId = $(event.target).attr("id");
        let view = clickedButtonId.replace("woocommerce-whatsapp-", "");
        view = view.replaceAll("-", "_");
        let url = new URL(window.location.href);
        let params = new URLSearchParams(url.search);
        params.set('view', view);
        url.search = params.toString();
        window.location.href = url.toString();
    });

    // call template library get API to show message template header, body and button text configured for the event.
    $("#library-template-content").load(facebook_for_woocommerce_whatsapp_events.ajax_url, function () {
        $.post(facebook_for_woocommerce_whatsapp_events.ajax_url, {
            action: 'wc_facebook_whatsapp_fetch_library_template_info',
            nonce: facebook_for_woocommerce_whatsapp_events.nonce,
            event: facebook_for_woocommerce_whatsapp_events.event,
        }, function (response) {
            if (response.success) {
                const event = facebook_for_woocommerce_whatsapp_events.event;
                const headerReplacements = {
                    "ORDER_REFUNDED": {
                        "{{1}}": "{{$amount}}"
                    }
                };
                const bodyReplacements = {
                    "ORDER_PLACED": {
                        "{{1}}": "{{first_name}}",
                        "{{2}}": "#{{order_number}}"
                    },
                    "ORDER_FULFILLED": {
                        "{{1}}": "{{first_name}}",
                        "{{2}}": "#{{order_number}}"
                    },
                    "ORDER_REFUNDED": {
                        "{{1}}": "{{first_name}}",
                        "{{2}}": "{{$amount}}",
                        "{{3}}": "#{{order_number}}"
                    }
                };
                const parsedData = JSON.parse(response.data);
                const apiResponseData = parsedData.data[0];
                // Parse template strings as HTML and extract text content to sanitize text
                var header = $.parseHTML(apiResponseData.header)[0].textContent;
                header = header.replace(/{{\d+}}/g, function (match) {
                    return headerReplacements[event][match];
                });
                var body = $.parseHTML(apiResponseData.body)[0].textContent;
                body = body.replace(/{{\d+}}/g, function(match) {
                    return bodyReplacements[event][match];
                  });
                // Body content has line breaks that need to be rendered in html
                body = body.replace(/\n/g, '<br>');
                if (facebook_for_woocommerce_whatsapp_events.event === "ORDER_REFUNDED") {
                    $('#library-template-content').html(`
                        <h3>Header</h3>
                        <p>${header}</p>
                        <h3>Body</h3>
                        <p>${body}</p>
                    `).show();
                }
                else {
                    const button = $.parseHTML(apiResponseData.buttons[0].text)[0].textContent;
                    $('#library-template-content').html(`
                    <h3>Header</h3>
                    <p>${header}</p>
                    <h3>Body</h3>
                    <p>${body}</p>
                    <h3>Call to action</h3>
                    <p>${button}</p>
                `).show();
                }
                console.log('Whatsapp Library Template call succeeded', response);
            }
            else {
                console.log('Whatsapp Library Template call failed', response);
                const message = facebook_for_woocommerce_whatsapp_finish.i18n.generic_error;
                const errorNoticeHtml = `
                <div class="notice-error">
                  <p>${message}</p>
                </div>
              `;
                $('#events-error-notice').html(errorNoticeHtml).show();
            }
        });
    });

    $('#woocommerce-whatsapp-save-order-confirmation').click(function (event) {
        var languageValue = $("#manage-event-language").val();
        var statusValue = $('input[name="template-status"]:checked').val();
        console.log('Save confirmation clicked: ', languageValue, statusValue);
        $.post(facebook_for_woocommerce_whatsapp_events.ajax_url, {
            action: 'wc_facebook_whatsapp_upsert_event_config',
            nonce: facebook_for_woocommerce_whatsapp_events.nonce,
            event: facebook_for_woocommerce_whatsapp_events.event,
            language: languageValue,
            status: statusValue
        }, function (response) {
            if (response.success) {
                let url = new URL(window.location.href);
                let params = new URLSearchParams(url.search);
                params.set('view', 'utility_settings');
                url.search = params.toString();
                window.location.href = url.toString();
                console.log('Whatsapp Event Config has been updated', response);
            }
            else {
                console.log('Whatsapp Event Config Update failure', response);
                const message = facebook_for_woocommerce_whatsapp_finish.i18n.generic_error;
                const errorNoticeHtml = `
                <div class="notice-error">
                  <p>${message}</p>
                </div>
              `;
                $('#events-error-notice').html(errorNoticeHtml).show();
            }
        });
    });

    $("#manage-event-language").load(facebook_for_woocommerce_whatsapp_events.ajax_url, function () {
        $.post(facebook_for_woocommerce_whatsapp_events.ajax_url, {
            action: 'wc_facebook_whatsapp_fetch_supported_languages',
            nonce: facebook_for_woocommerce_whatsapp_events.nonce,
        }, function (response) {
            if (response.success) {
                const parsedData = JSON.parse(response.data);
                const supportedLanguages = parsedData.supported_languages;
                $.each(supportedLanguages, function (index, languageObj) {
                    var displayValue = $.parseHTML(languageObj.display_value)[0].textContent;
                    var locale = $.parseHTML(languageObj.locale)[0].textContent;
                    $("#manage-event-language").append($("<option></option>").text(displayValue).val(locale));
                });
                var eventConfiglanguage = getEventLanguage(facebook_for_woocommerce_whatsapp_events.event);
                $("#manage-event-language").val(eventConfiglanguage);
                console.log('Fetch supported language call succeeded');
            }
            else {
                console.log('Fetch supported language call failed', response);
                const message = facebook_for_woocommerce_whatsapp_finish.i18n.generic_error;
                const errorNoticeHtml = `
                <div class="notice-error">
                  <p>${message}</p>
                </div>
              `;
                $('#events-error-notice').html(errorNoticeHtml).show();
            }
        });
    });

    function getEventLanguage(event) {
        switch (event) {
            case "ORDER_PLACED":
                return facebook_for_woocommerce_whatsapp_events.order_placed_language;
            case "ORDER_FULFILLED":
                return facebook_for_woocommerce_whatsapp_events.order_fulfilled_language;
            case "ORDER_REFUNDED":
                return facebook_for_woocommerce_whatsapp_events.order_refunded_language;
            default:
                return null;
        }
    }
});