Sam20202's picture
Initial deploy
0533780
// popup.js
const selectBtn = document.getElementById("select-btn");
const dot = document.getElementById("dot");
const serverLabel = document.getElementById("server-label");
const offlineMsg = document.getElementById("offline-msg");
let selectedMode = "recognize";
// ── Check server health ───────────────────────────────────────────────────────
async function checkServer() {
try {
const r = await fetch("http://localhost:8000/health", {
signal: AbortSignal.timeout(3000),
});
const d = await r.json();
return d.status === "ok";
} catch {
return false;
}
}
async function updateServerStatus() {
const ok = await checkServer();
dot.className = `dot ${ok ? "ok" : "err"}`;
serverLabel.textContent = ok ? "server ready" : "offline";
selectBtn.disabled = !ok;
offlineMsg.classList.toggle("show", !ok);
}
updateServerStatus();
// ── Mode toggle ───────────────────────────────────────────────────────────────
document.querySelectorAll(".mode-opt").forEach(btn => {
btn.addEventListener("click", () => {
document.querySelectorAll(".mode-opt").forEach(b => b.classList.remove("active"));
btn.classList.add("active");
selectedMode = btn.dataset.mode;
chrome.storage.local.set({ ocrMode: selectedMode });
});
});
// Restore saved mode
chrome.storage.local.get(["ocrMode"], ({ ocrMode }) => {
if (ocrMode) {
selectedMode = ocrMode;
document.querySelectorAll(".mode-opt").forEach(btn => {
btn.classList.toggle("active", btn.dataset.mode === ocrMode);
});
}
});
// ── Select button ─────────────────────────────────────────────────────────────
selectBtn.addEventListener("click", async () => {
// Save current mode to storage so background can read it
await chrome.storage.local.set({ ocrMode: selectedMode });
// Get current tab and inject the selection
const [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
await chrome.scripting.executeScript({
target: { tabId: tab.id },
func: () => {
window.postMessage({ type: "GLMOCR_START" }, "*");
},
});
// Tell content script to start selection mode
chrome.tabs.sendMessage(tab.id, { type: "START_SELECTION" });
// Close popup so it doesn't obscure the page
window.close();
});