embermarks/options/options.js
2026-01-04 15:33:49 -04:00

64 lines
2.1 KiB
JavaScript

// Embermarks - Options Script
document.addEventListener("DOMContentLoaded", async () => {
const numBookmarksInput = document.getElementById("numBookmarks");
const maxVisitCountInput = document.getElementById("maxVisitCount");
const minAgeDaysInput = document.getElementById("minAgeDays");
const folderList = document.getElementById("folderList");
const saveBtn = document.getElementById("saveBtn");
const saveStatus = document.getElementById("saveStatus");
// Load current settings
const settings = await browser.runtime.sendMessage({ action: "getSettings" });
numBookmarksInput.value = settings.numBookmarks;
maxVisitCountInput.value = settings.maxVisitCount;
minAgeDaysInput.value = settings.minAgeDays;
// Load folder list
const folders = await browser.runtime.sendMessage({
action: "getBookmarkFolders",
});
folderList.innerHTML = "";
for (const folder of folders) {
const item = document.createElement("div");
item.className = `folder-item folder-depth-${Math.min(folder.depth, 3)}`;
const isExcluded = settings.excludedFolders.includes(folder.id);
item.innerHTML = `
<input type="checkbox" id="folder-${folder.id}" value="${folder.id}" ${isExcluded ? "checked" : ""}>
<label for="folder-${folder.id}">📁 ${folder.title || "(unnamed)"}</label>
`;
folderList.appendChild(item);
}
// Save settings
saveBtn.addEventListener("click", async () => {
const excludedFolders = [];
folderList.querySelectorAll("input:checked").forEach((checkbox) => {
excludedFolders.push(checkbox.value);
});
const newSettings = {
numBookmarks: parseInt(numBookmarksInput.value, 10),
maxVisitCount: parseInt(maxVisitCountInput.value, 10),
minAgeDays: parseInt(minAgeDaysInput.value, 10),
excludedFolders,
};
await browser.runtime.sendMessage({
action: "saveSettings",
settings: newSettings,
});
// Show save confirmation
saveStatus.classList.add("visible");
setTimeout(() => {
saveStatus.classList.remove("visible");
}, 2000);
});
});