80 lines
2.6 KiB
JavaScript
80 lines
2.6 KiB
JavaScript
// Embermarks - Options Script
|
|
|
|
document.addEventListener("DOMContentLoaded", async () => {
|
|
const numBookmarksInput = document.getElementById("numBookmarks");
|
|
const refreshBehaviorSelect = document.getElementById("refreshBehavior");
|
|
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;
|
|
refreshBehaviorSelect.value = settings.refreshBehavior || "always";
|
|
maxVisitCountInput.value = settings.maxVisitCount;
|
|
minAgeDaysInput.value = settings.minAgeDays;
|
|
|
|
// Load folder list
|
|
const folders = await browser.runtime.sendMessage({
|
|
action: "getBookmarkFolders",
|
|
});
|
|
|
|
// Clear loading text
|
|
while (folderList.firstChild) {
|
|
folderList.removeChild(folderList.firstChild);
|
|
}
|
|
|
|
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);
|
|
|
|
const checkbox = document.createElement("input");
|
|
checkbox.type = "checkbox";
|
|
checkbox.id = `folder-${folder.id}`;
|
|
checkbox.value = folder.id;
|
|
checkbox.checked = isExcluded;
|
|
|
|
const label = document.createElement("label");
|
|
label.htmlFor = `folder-${folder.id}`;
|
|
label.textContent = `📁 ${folder.title || "(unnamed)"}`;
|
|
|
|
item.appendChild(checkbox);
|
|
item.appendChild(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),
|
|
refreshBehavior: refreshBehaviorSelect.value,
|
|
maxVisitCount: parseInt(maxVisitCountInput.value, 10),
|
|
minAgeDays: parseInt(minAgeDaysInput.value, 10),
|
|
excludedFolders,
|
|
};
|
|
|
|
await browser.runtime.sendMessage({
|
|
action: "saveSettings",
|
|
settings: newSettings,
|
|
});
|
|
|
|
// Clear cache when settings change
|
|
await browser.runtime.sendMessage({ action: "clearCache" });
|
|
|
|
// Show save confirmation
|
|
saveStatus.classList.add("visible");
|
|
setTimeout(() => {
|
|
saveStatus.classList.remove("visible");
|
|
}, 2000);
|
|
});
|
|
});
|