"use strict";

// Toolbar-icon popup.
// PL-095: 通常保存 / 環境設定 ボタンを追加。 subscription downgrade 等で
// in-page widget が消えても toolbar からアーカイブ操作を残すための導線。
// 実処理はページ側 content.js に委譲する (popup は別 document でページの
// DOM/会話 API に触れられないため、 active タブへ "popup_action" を送るだけ)。
// 既存のご意見フォームボタンは下段に維持。
const FORM_BASE = "https://docs.google.com/forms/d/e/1FAIpQLSdck8nEzeuxfzyajSVi7qRTfMiLrbf4aipANcvb43uofuA-Ww/viewform";
const PRODUCT_ENTRY = "entry.634899730";
const PRODUCT = "Claude";

function applyText(id, key) {
  document.getElementById(id).textContent = chrome.i18n.getMessage(key);
}

applyText("asa-popup-heading", "popupHeading");
applyText("asa-popup-save", "popupSaveButton");
applyText("asa-popup-settings", "popupSettingsButton");
applyText("asa-popup-desc", "popupDesc");
applyText("asa-popup-open", "popupButton");

// 対象サービス外で押された時の案内。 標準 alert (拡張名つきの枠) は使わず
// popup 内に文言を出して数秒後に自動で閉じる。
function showNotice(message) {
  document.body.innerHTML = "";
  const box = document.createElement("div");
  box.className = "asa-notice";
  // info アイコン (静的 SVG、外部依存なし)。
  box.innerHTML =
    '<svg viewBox="0 0 24 24" aria-hidden="true">' +
    '<path fill="currentColor" d="M12 2a10 10 0 100 20 10 10 0 000-20zm0 4.5a1.35 1.35 0 110 2.7 1.35 1.35 0 010-2.7zM13.3 17.5h-2.6v-6.6h2.6v6.6z"/>' +
    "</svg>";
  const p = document.createElement("p");
  p.textContent = message;
  box.appendChild(p);
  document.body.appendChild(box);
  setTimeout(() => window.close(), 2500);
}

// active タブの content script に保存 / 設定を依頼。 content script 不在
// (Claude 以外のタブ) は lastError が立つので案内を出す。
function sendPopupAction(action) {
  chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => {
    const tab = tabs && tabs[0];
    if (!tab || typeof tab.id !== "number") {
      showNotice(chrome.i18n.getMessage("popupNotOnServicePage"));
      return;
    }
    chrome.tabs.sendMessage(tab.id, { type: "popup_action", action }, () => {
      if (chrome.runtime.lastError) {
        showNotice(chrome.i18n.getMessage("popupNotOnServicePage"));
        return;
      }
      window.close();
    });
  });
}

document.getElementById("asa-popup-save").addEventListener("click", () => {
  sendPopupAction("save_open");
});

document.getElementById("asa-popup-settings").addEventListener("click", () => {
  sendPopupAction("settings");
});

document.getElementById("asa-popup-open").addEventListener("click", () => {
  const url = `${FORM_BASE}?usp=pp_url&${PRODUCT_ENTRY}=${encodeURIComponent(PRODUCT)}`;
  chrome.tabs.create({ url });
  window.close();
});
