<?php
if ( ! defined( 'ABSPATH' ) ) exit;

if ( ! function_exists( 'get_plugin_data' ) ) {
    require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
}
$plugin_data = get_plugin_data( DORI_CHATBOT_PLUGIN_FILE );

$is_connected = false;
$woocommerce_version = null;

try {
    if (class_exists('WooCommerce')) {
        $woocommerce_version = WC()->version;
        
        if (class_exists('Dori_Chatbot_WooCommerce_Integration')) {
            $is_connected = Dori_Chatbot_WooCommerce_Integration::is_store_fully_connected();
        }
    }
} catch (Exception $e) {
    if (function_exists('error_log')) {
        error_log('Mori Chatbot - Error checking WooCommerce status: ' . $e->getMessage());
    }
}

$wordpress_data = array(
    'ajaxurl' => admin_url('admin-ajax.php'),
    'nonce' => wp_create_nonce('wp_rest'),
    'siteUrl' => get_site_url(),
    'siteName' => get_bloginfo('name'),
    'onboardingCompleted' => get_option('dori-chatbot-onboarding-completed', false),
    'isConnected' => $is_connected,
    'woocommerceVersion' => $woocommerce_version,
    'wpVersion' => get_bloginfo('version'),
    'pluginVersion' => $plugin_data['Version'],
    'assetsUrl' => plugin_dir_url(DORI_CHATBOT_PLUGIN_FILE) . 'assets/',
    'currentUser' => array(
        'id' => get_current_user_id(),
        'canManageOptions' => current_user_can('manage_options'),
    ),
);

$wordpress_data['settings'] = array(
    'integrationId' => get_option('dori-chatbot-integrate', ''),
    'sharingId' => get_option('dori-chatbot-sharing-id', ''),
    'clientId' => get_option('dori-chatbot-client-id', ''),
);
?>
    <script>
        window.moriAdminUIData = <?php echo wp_json_encode($wordpress_data); ?>;
    </script>

<div class="wrap dv-admin-wrap">
    <div id="mori-admin-ui-root"></div>
</div>

<?php
$admin_ui_url = Dori_Chatbot_API_Constants::get_admin_ui_url();
$is_local_dev = (strpos($admin_ui_url, '127.0.0.1') !== false || strpos($admin_ui_url, 'localhost') !== false);

if ($is_local_dev) {
    $admin_ui_url = str_replace('127.0.0.1', 'localhost', $admin_ui_url);
}

$vite_server = $admin_ui_url;
?>

<?php if ($is_local_dev): ?>
    <script type="module">
        window.__mori_dev_mode = true;
        import RefreshRuntime from '<?php echo esc_js($vite_server); ?>/@react-refresh'
        RefreshRuntime.injectIntoGlobalHook(window)
        window.$RefreshReg$ = () => {}
        window.$RefreshSig$ = () => (type) => type
        window.__vite_plugin_react_preamble_installed__ = true
    </script>
    <link rel="stylesheet" href="<?php echo esc_url($vite_server . '/src/styles/index.css'); ?>">
    <script type="module" src="<?php echo esc_url($vite_server . '/@vite/client'); ?>"></script>
    <script type="module" src="<?php echo esc_url($vite_server . '/src/index.tsx'); ?>"></script>
<?php else: ?>
    <script src="<?php echo esc_url($admin_ui_url . '/dist/assets/index.js'); ?>" type="module"></script>
    <link rel="stylesheet" href="<?php echo esc_url($admin_ui_url . '/dist/assets/index.css'); ?>">
<?php endif; ?>

<script>
    window.addEventListener('error', function(e) {
        const target = e.target || e.srcElement;
        const src = target.src || target.href || '';

        if (src.indexOf('mori-admin-ui') !== -1 || src.indexOf('127.0.0.1:3010') !== -1) {
            console.error('Mori Admin UI Load Error:', {
                message: e.message,
                filename: e.filename,
                target: target.tagName,
                src: src
            });

            const root = document.getElementById('mori-admin-ui-root');
            if (root && !root.children.length) {
                const isDev = <?php echo $is_local_dev ? 'true' : 'false'; ?>;
                let errorHtml = '<div class="notice notice-error" style="padding: 20px; max-width: 600px; margin: 20px 0;">';
                errorHtml += '<h2 style="color: #dc3232; margin-top: 0;">متأسفانه خطایی در بارگذاری رابط کاربری رخ داده است</h2>';

                if (isDev) {
                    errorHtml += '<p>به نظر می‌رسد در حالت <strong>توسعه (Development Mode)</strong> هستید اما سرور Vite پاسخگو نیست.</p>';
                    errorHtml += '<p>لطفاً دستور زیر را در ترمینال اجرا کنید:</p>';
                    errorHtml += '<pre style="background: #f1f1f1; padding: 15px; border-radius: 5px; overflow-x: auto;"><code>make admin-ui-dev</code></pre>';
                    errorHtml += '<p>سپس صفحه را دوباره بارگذاری کنید.</p>';
                } else {
                    errorHtml += '<p>تلاش برای بارگذاری رابط کاربری با شکست مواجه شد.</p>';
                    errorHtml += '<p><strong>URL attempted:</strong> <code>' + src + '</code></p>';
                    errorHtml += '<p>لطفاً اتصال اینترنت خود را بررسی کنید و دوباره تلاش کنید.</p>';
                }

                errorHtml += '<button onclick="location.reload()" style="background: #0073aa; color: white; border: none; padding: 10px 20px; border-radius: 5px; cursor: pointer; margin-top: 10px;">تلاش مجدد</button>';
                errorHtml += '</div>';
                root.innerHTML = errorHtml;
            }
        }
    }, true);
</script>
