/**
 * Виджет статуса почты на вкладке «Уведомления» (FR-M-011).
 */
(function () {
    async function refreshMailStatus() {
        const el = document.getElementById('mail-status-text');
        const widget = document.getElementById('mail-status-widget');
        if (!el) return;
        try {
            const resp = await fetch('/api/v1/admin/mail/health');
            const data = await resp.json();
            if (!data.success) {
                el.textContent = 'Статус почты недоступен';
                if (widget) widget.className = 'alert alert-warning mb-3';
                return;
            }
            const st = (data.health && data.health.status) || 'unknown';
            const depth = data.queue_depth != null ? data.queue_depth : 0;
            const m = data.metrics || {};
            const metricsText =
                ' | sent: ' + (m.sent_total || 0) +
                ', failed: ' + (m.failed_total || 0);

            if (st === 'ok' && data.available) {
                el.innerHTML =
                    'Почта: <strong>готова</strong>. Очередь: ' + depth + metricsText +
                    ' <a href="/admin/settings#mail" class="alert-link ms-2">Настроить</a>';
                if (widget) widget.className = 'alert alert-success mb-3';
            } else if (st === 'degraded' || !data.available) {
                el.innerHTML =
                    'Почта <strong>не настроена</strong>. Очередь: ' + depth + metricsText +
                    ' <a href="/admin/settings#mail" class="alert-link ms-2">Настроить почту</a>';
                if (widget) widget.className = 'alert alert-warning mb-3';
            } else {
                el.textContent = 'Почта: ошибка';
                if (widget) widget.className = 'alert alert-danger mb-3';
            }
        } catch (e) {
            el.textContent = 'Не удалось загрузить статус почты';
            if (widget) widget.className = 'alert alert-secondary mb-3';
        }
    }
    document.addEventListener('DOMContentLoaded', refreshMailStatus);
})();
