embermarks/options/options.js

84 lines
2.8 KiB
JavaScript
Raw Normal View History

2026-01-04 19:28:14 +00:00
// Embermarks - Options Script
document.addEventListener("DOMContentLoaded", async () => {
const numBookmarksInput = document.getElementById("numBookmarks");
const refreshBehaviorSelect = document.getElementById("refreshBehavior");
2026-01-04 19:28:14 +00:00
const maxVisitCountInput = document.getElementById("maxVisitCount");
const minAgeDaysInput = document.getElementById("minAgeDays");
const notVisitedInDaysInput = document.getElementById("notVisitedInDays");
2026-01-04 19:28:14 +00:00
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";
2026-01-04 19:28:14 +00:00
maxVisitCountInput.value = settings.maxVisitCount;
minAgeDaysInput.value = settings.minAgeDays;
notVisitedInDaysInput.value = settings.notVisitedInDays || 0;
2026-01-04 19:28:14 +00:00
// Load folder list
const folders = await browser.runtime.sendMessage({
action: "getBookmarkFolders",
});
// Clear loading text
while (folderList.firstChild) {
folderList.removeChild(folderList.firstChild);
}
2026-01-04 19:28:14 +00:00
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)"}`;
2026-01-04 19:28:14 +00:00
item.appendChild(checkbox);
item.appendChild(label);
2026-01-04 19:28:14 +00:00
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,
2026-01-04 19:28:14 +00:00
maxVisitCount: parseInt(maxVisitCountInput.value, 10),
minAgeDays: parseInt(minAgeDaysInput.value, 10),
notVisitedInDays: parseInt(notVisitedInDaysInput.value, 10),
2026-01-04 19:28:14 +00:00
excludedFolders,
};
await browser.runtime.sendMessage({
action: "saveSettings",
settings: newSettings,
});
// Clear cache when settings change
await browser.runtime.sendMessage({ action: "clearCache" });
2026-01-04 19:28:14 +00:00
// Show save confirmation
saveStatus.classList.add("visible");
setTimeout(() => {
saveStatus.classList.remove("visible");
}, 2000);
});
});