65 lines
2.1 KiB
JavaScript
65 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);
|
||
|
|
});
|
||
|
|
});
|