let creatingDoc = false;
const main = async () => {
  if (creatingDoc) return;
  creatingDoc = true;
  try {
    if (await chrome.offscreen.hasDocument()) {
      creatingDoc = false;
      return;
    }
    // reasons תואמים לשימוש האמיתי במסמך ה-offscreen: ניגון צליל התרעה (AUDIO_PLAYBACK)
    // וקאשינג cities/מצב-התראה ב-localStorage (LOCAL_STORAGE). לולאת ה-polling חיה כאן כי
    // ה-SW של MV3 נהרג ב-idle. (.filter(Boolean) — הגנה אם enum חסר בגרסת Chrome).
    await chrome.offscreen.createDocument({
      url: "backgroundPage.html",
      reasons: [
        chrome.offscreen.Reason.AUDIO_PLAYBACK,
        chrome.offscreen.Reason.LOCAL_STORAGE,
      ].filter(Boolean),
      justification:
        "ניגון צליל התרעה, קאשינג cities ומצב-התראה ב-localStorage, ולולאת ה-polling להתראות פעילות.",
    });

    console.log("created offscreen background page");
  } catch (error) {
    console.error(error);
  }
  creatingDoc = false;
};
main();

//run on startup
chrome.runtime.onStartup.addListener(() => main());

// Return current cities
chrome.runtime.onMessage.addListener((value, sender, sendResponse) => {
  const { type, data } = value;
  switch (type) {
    case "STORAGE_GET":
      chrome.storage.sync.get(data, (v) => {
        sendResponse(v);
      });
      return true;

    case "STORAGE_SET":
      chrome.storage.sync.set(data, (v) => {
        sendResponse(v);
      });
      return true;

    case "NOTIFICATION_CREATE":
      // מחזיר את ה-notificationId שנוצר → background ממפה id→ערים (קליק על "פתח/העתק")
      chrome.notifications.create(data, (id) => sendResponse(id));
      return true;

    case "CREATE_WINDOW":
      chrome.windows.create(data, (v) => {
        if (chrome.runtime.lastError) return sendResponse();
        sendResponse(v);
      });
      return true;

    case "UPDATE_WINDOW":
      chrome.windows.update(...data, (v) => {
        if (chrome.runtime.lastError) return sendResponse();
        sendResponse(v);
      });
      return true;
  }
});

chrome.notifications.onButtonClicked.addListener((...data) => {
  chrome.runtime.sendMessage({ type: "NOTIFICATION_CLICKED", data });
});
