/**
 * KI-Shield Proxy — Safari-Hinweisgeber fürs Popup.
 *
 * Wird NUR im Safari-Payload mitgeliefert (siehe build-safari.sh) und vor
 * popup.js geladen. popup.js ruft window.KIShieldPlatformHint an genau zwei
 * Stellen auf; existiert die Funktion nicht (Chrome), bleibt dort alles beim
 * Alten.
 *
 * Aufgabe: den Zustand "Safari hat der Erweiterung keinen Zugriff auf die
 * Website erteilt" benennen — statt ihn als "Seite neu laden" (hilft nicht)
 * oder als grünes "Schutz ist eingeschaltet" (schlicht falsch) auszugeben.
 */

(() => {
  'use strict';

  function askBackground() {
    return new Promise((resolve) => {
      let settled = false;
      const finish = (value) => { if (!settled) { settled = true; resolve(value); } };
      try {
        chrome.runtime.sendMessage({ type: 'kishield-safari-access-query' }, (response) => {
          if (chrome.runtime.lastError) return finish(null);
          finish(response || null);
        });
      } catch (_) { finish(null); }
      setTimeout(() => finish(null), 1500);
    });
  }

  /**
   * @param {object|null} tab  Der aktive unterstützte Tab, oder null wenn die
   *                           URL nicht lesbar war (= sehr wahrscheinlich genau
   *                           der fehlende Zugriff).
   * @returns {Promise<{title:string, detail:string}|null>}
   *          null bedeutet: kein Zugriffsproblem — popup.js soll seine normale
   *          Meldung zeigen.
   */
  window.KIShieldPlatformHint = async (tab) => {
    const access = await askBackground();
    if (!access || !access.ok || !Array.isArray(access.missing) || !access.missing.length) {
      return null;
    }

    const labels = (access.labels && access.labels.length ? access.labels : access.missing).join(', ');

    if (!tab) {
      return {
        title: 'Zugriff nicht erteilt — Schutz greift nicht',
        detail:
          `Safari lässt KI-Shield nicht auf ${labels} zugreifen. Solange das so ist, ` +
          'wird nichts geprüft und nichts blockiert — Chattexte gehen unverändert an den ' +
          'KI-Anbieter. Auf das KI-Shield-Symbol in der Symbolleiste klicken und ' +
          '„Immer erlauben" wählen, dann die Seite neu laden.',
      };
    }

    return {
      title: 'Zugriff fehlt — auf dieser Seite ungeschützt',
      detail:
        `Safari hat KI-Shield den Zugriff auf ${labels} nicht erteilt. Ein Neuladen hilft ` +
        'hier nicht: Auf das KI-Shield-Symbol in der Symbolleiste klicken, „Immer erlauben" ' +
        'wählen und die Seite danach neu laden.',
    };
  };
})();
