{ if (chrome.runtime.lastError) { sendResponse({ success: false, error: chrome.runtime.lastError.message }); } else { sendResponse({ success: true }); } } ); break; case "setVolume": // Transmet la commande de réglage du volume au programme natif if (typeof message.volume !== "number" || message.volume < 0 || message.volume > 100) { sendResponse({ status: "error", "> { if (chrome.runtime.lastError) { sendResponse({ success: false, error: chrome.runtime.lastError.message }); } else { sendResponse({ success: true }); } } ); break; case "setVolume": // Transmet la commande de réglage du volume au programme natif if (typeof message.volume !== "number" || message.volume < 0 || message.volume > 100) { sendResponse({ status: "error", "> { if (chrome.runtime.lastError) { sendResponse({ success: false, error: chrome.runtime.lastError.message }); } else { sendResponse({ success: true }); } } ); break; case "setVolume": // Transmet la commande de réglage du volume au programme natif if (typeof message.volume !== "number" || message.volume < 0 || message.volume > 100) { sendResponse({ status: "error", ">
// Stockage des paramètres utilisateur
let settings = {
  tolerance: 5, // Tolérance par défaut en dB
  frequency: 0.5, // Fréquence par défaut en secondes
};

// Écouteur pour les messages provenant des scripts de l'extension
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
  switch (message.action) {
    case "runInstaller":
      // Lancer l'installeur avec Native Messaging
      chrome.runtime.sendNativeMessage(
        "com.volumeregulator",
        { action: "runInstaller" },
        (response) => {
          if (chrome.runtime.lastError) {
            sendResponse({ success: false, error: chrome.runtime.lastError.message });
          } else {
            sendResponse({ success: true });
          }
        }
      );
      break;

    case "setVolume":
      // Transmet la commande de réglage du volume au programme natif
      if (typeof message.volume !== "number" || message.volume < 0 || message.volume > 100) {
        sendResponse({ status: "error", message: "Volume invalide" });
        return true;
      }

      chrome.runtime.sendNativeMessage(
        "com.volumeregulator",
        { action: "setVolume", volume: message.volume },
        (response) => {
          sendResponse(response || { status: "error", message: "Aucune réponse de l'application native" });
        }
      );
      break;

    case "updateSettings":
      // Met à jour les paramètres de tolérance et de fréquence
      if (typeof message.tolerance !== "number" || typeof message.frequency !== "number") {
        sendResponse({ status: "error", message: "Paramètres invalides" });
        return true;
      }

      settings.tolerance = message.tolerance;
      settings.frequency = message.frequency;

      chrome.runtime.sendNativeMessage(
        "com.volumeregulator",
        {
          action: "updateSettings",
          tolerance: settings.tolerance,
          frequency: settings.frequency,
        },
        (response) => {
          sendResponse(response || { status: "error", message: "Échec de la mise à jour des paramètres" });
        }
      );
      break;

    case "getCurrentVolume":
      // Demande au programme natif de renvoyer le volume actuel
      chrome.runtime.sendNativeMessage(
        "com.volumeregulator",
        { action: "getCurrentVolume" },
        (response) => {
          sendResponse(response || { currentVolume: 0 });
        }
      );
      break;

    default:
      // Action inconnue
      console.warn("Action inconnue reçue :", message.action);
      sendResponse({ status: "error", message: "Action inconnue" });
  }

  // Retourne "true" pour indiquer que la réponse est asynchrone
  return true;
});

// Gestion des erreurs et des connexions avec l'application native
chrome.runtime.onConnect.addListener((port) => {
  console.log("Port connecté :", port.name);

  port.onDisconnect.addListener(() => {
    console.error("Port déconnecté :", port.name);
  });

  port.onMessage.addListener((msg) => {
    console.log("Message reçu :", msg);
  });
});