42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
const stateEl = document.querySelector("#state");
|
|
const tabsEl = document.querySelector("#tabs");
|
|
const lastSyncEl = document.querySelector("#last-sync");
|
|
const endpointEl = document.querySelector("#endpoint");
|
|
const errorEl = document.querySelector("#error");
|
|
const syncButton = document.querySelector("#sync");
|
|
|
|
syncButton.addEventListener("click", async () => {
|
|
syncButton.disabled = true;
|
|
await chrome.runtime.sendMessage({ type: "loki.sync-now" });
|
|
await render();
|
|
syncButton.disabled = false;
|
|
});
|
|
|
|
await render();
|
|
|
|
async function render() {
|
|
const result = await chrome.runtime.sendMessage({ type: "loki.get-status" });
|
|
const status = result.status;
|
|
endpointEl.textContent = result.endpoint;
|
|
|
|
if (!status) {
|
|
stateEl.textContent = "waiting";
|
|
stateEl.className = "state";
|
|
tabsEl.textContent = "-";
|
|
lastSyncEl.textContent = "-";
|
|
errorEl.hidden = true;
|
|
return;
|
|
}
|
|
|
|
stateEl.textContent = status.ok ? "connected" : "offline";
|
|
stateEl.className = `state ${status.ok ? "ok" : "bad"}`;
|
|
tabsEl.textContent = String(status.tabCount ?? 0);
|
|
lastSyncEl.textContent = status.lastSyncAt ? new Date(status.lastSyncAt).toLocaleTimeString() : "-";
|
|
|
|
if (status.error) {
|
|
errorEl.textContent = status.error;
|
|
errorEl.hidden = false;
|
|
} else {
|
|
errorEl.hidden = true;
|
|
}
|
|
}
|