Files
chrome-lab-links/options.js
T
2026-10-11 18:15:37 +00:00

63 lines
1.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const $ = (id) => document.getElementById(id);
function status(text, kind = "") {
$("status").textContent = text;
$("status").className = kind;
}
function showConnected(on) {
$("now").hidden = !on;
$("off").hidden = !on;
}
async function init() {
const cfg = await LabSync.getConfig();
if (cfg) {
$("url").value = cfg.url;
$("user").value = cfg.user;
$("pass").value = cfg.pass;
showConnected(true);
}
}
async function runSync() {
status("> synchronisiere …");
try {
const r = await LabSync.sync();
status(`> OK – ${r.links} Links abgeglichen.`, "ok");
} catch (e) {
status("> FEHLER: " + e.message, "err");
}
}
$("cfg").addEventListener("submit", async (e) => {
e.preventDefault();
const cfg = { url: $("url").value.trim(), user: $("user").value.trim(), pass: $("pass").value };
let origin;
try { origin = new URL(cfg.url).origin + "/*"; } catch { return status("> FEHLER: Ungültige URL.", "err"); }
// Muss direkt aus dem Klick heraus aufgerufen werden (Nutzergeste).
const granted = await chrome.permissions.request({ origins: [origin] });
if (!granted) return status("> FEHLER: Zugriff auf den Server wurde nicht erlaubt.", "err");
await LabSync.setConfig(cfg);
showConnected(true);
await runSync();
});
$("now").addEventListener("click", runSync);
$("off").addEventListener("click", async () => {
const cfg = await LabSync.getConfig();
await LabSync.setConfig(null);
if (cfg) {
try { await chrome.permissions.remove({ origins: [new URL(cfg.url).origin + "/*"] }); } catch {}
}
for (const id of ["url", "user", "pass"]) $(id).value = "";
showConnected(false);
status("> Sync getrennt. Lokale Links bleiben erhalten.");
});
init();