// Content Script läuft auf der Web-App-Seite
// Lauscht auf window.postMessage von der Web-App und leitet an Background weiter

const MESSAGE_SOURCE = "eship-webapp";

// Markiere Extension als verfügbar - MEHRFACH versuchen, da Timing variieren kann
function setExtensionFlag() {
  try {
    const hasChrome = typeof chrome !== 'undefined';
    const hasRuntime = hasChrome && chrome.runtime;
    const runtimeId = hasRuntime ? chrome.runtime.id : null;
    if (typeof window !== 'undefined' && hasChrome && hasRuntime && runtimeId) {
      window.__EBAY_EXTENSION__ = true;
      window.__EBAY_EXTENSION_ID__ = runtimeId; // Extension-ID für chrome.runtime.sendMessage
      console.log('[ESHIP-CONTENT] window.__EBAY_EXTENSION__ set to true, ID:', runtimeId);
      return true;
    }
  } catch (e) {
    console.error('[ESHIP-CONTENT] Error setting flag:', e);
  }
  return false;
}

// Versuche Flag sofort zu setzen
console.log('[ESHIP-CONTENT] Content script loaded');
if (!setExtensionFlag()) {
  // Wenn window nicht verfügbar, warte auf DOMContentLoaded oder document.readyState
  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', () => {
      setExtensionFlag();
    });
  } else {
    // DOM ist bereits geladen, versuche nochmal
    setTimeout(() => {
      setExtensionFlag();
    }, 0);
  }
}

// Sende Extension-ID an Web-App via postMessage (da Content Script Isolation verhindert, dass window-Properties geteilt werden)
// Die Web-App kann dann die Extension-ID in ihrem eigenen Context speichern
function sendExtensionIdToWebApp() {
  try {
    const runtimeId = chrome.runtime?.id;
    if (runtimeId) {
      // Sende Extension-ID an Web-App
      window.postMessage({
        source: "eship-extension",
        type: "EXTENSION_ID",
        extensionId: runtimeId
      }, "*");
    }
  } catch (e) {
    console.error('[ESHIP-CONTENT] Error sending extension ID:', e);
  }
}

// Sende Extension-ID beim Laden
sendExtensionIdToWebApp();
// Auch nach kurzer Verzögerung nochmal (falls Web-App noch nicht bereit ist)
setTimeout(sendExtensionIdToWebApp, 500);

window.addEventListener("message", (event) => {
  // Sicherheitscheck: Nur Nachrichten von derselben Origin akzeptieren
  if (event.data?.source !== MESSAGE_SOURCE) return;

  // Auth Messages (JWT)
  if (event.data.type === "AUTH_JWT" || event.data.type === "AUTH_CLEARED") {
    chrome.runtime.sendMessage(
      {
        type: event.data.type,
        jwt: event.data.jwt,
      },
      (response) => {
        // Antwort zurück an Web-App senden
        window.postMessage(
          {
            source: "eship-extension",
            type: event.data.type,
            response: response,
          },
          "*"
        );
      }
    );
    return;
  }

  // eBay Parsing Request (PARSE_URL)
  if (event.data.action === "PARSE_URL" && event.data.url) {
    chrome.runtime.sendMessage(
      {
        action: "PARSE_URL",
        url: event.data.url,
      },
      (response) => {
        // Antwort zurück an Web-App senden
        window.postMessage(
          {
            source: "eship-extension",
            messageId: event.data.messageId,
            ok: response?.ok,
            data: response?.data,
            error: response?.error,
          },
          "*"
        );
      }
    );
    return;
  }
});
