feat: add per-vault reindexing with selective reload based on modified vaults, simplify hidden files whitelist logic to include all sub-hidden files when parent is whitelisted, and auto-uncheck includeHidden when adding whitelist items
This commit is contained in:
+36
-6
@@ -3231,6 +3231,9 @@
|
||||
|
||||
// --- Hidden Files Configuration ---
|
||||
|
||||
// Track which vaults have been modified
|
||||
let modifiedVaults = new Set();
|
||||
|
||||
async function loadHiddenFilesSettings() {
|
||||
const container = document.getElementById("hidden-files-vault-list");
|
||||
if (!container) return;
|
||||
@@ -3290,7 +3293,7 @@
|
||||
document.createTextNode("Liste blanche")
|
||||
]);
|
||||
const whitelistHint = el("span", { class: "config-hint", style: "display:block;margin-bottom:8px" }, [
|
||||
document.createTextNode("Dossiers cachés spécifiques à afficher (ex: .obsidian, .github)")
|
||||
document.createTextNode("Dossiers cachés spécifiques à afficher (tous les sous-dossiers cachés seront inclus)")
|
||||
]);
|
||||
|
||||
const whitelistItems = el("div", { class: "hidden-files-whitelist-items", id: `whitelist-items-${vault.name}` });
|
||||
@@ -3330,10 +3333,20 @@
|
||||
// Event listeners
|
||||
const addBtn = addRow.querySelector("button");
|
||||
const input = addRow.querySelector("input");
|
||||
const checkbox = toggleRow.querySelector("input[type='checkbox']");
|
||||
|
||||
addBtn.addEventListener("click", () => addWhitelistItem(vault.name));
|
||||
addBtn.addEventListener("click", () => {
|
||||
addWhitelistItem(vault.name);
|
||||
modifiedVaults.add(vault.name);
|
||||
});
|
||||
input.addEventListener("keypress", (e) => {
|
||||
if (e.key === "Enter") addWhitelistItem(vault.name);
|
||||
if (e.key === "Enter") {
|
||||
addWhitelistItem(vault.name);
|
||||
modifiedVaults.add(vault.name);
|
||||
}
|
||||
});
|
||||
checkbox.addEventListener("change", () => {
|
||||
modifiedVaults.add(vault.name);
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -3353,6 +3366,7 @@
|
||||
const removeBtn = item.querySelector("button");
|
||||
removeBtn.addEventListener("click", () => {
|
||||
item.remove();
|
||||
modifiedVaults.add(vaultName);
|
||||
});
|
||||
|
||||
return item;
|
||||
@@ -3361,6 +3375,7 @@
|
||||
function addWhitelistItem(vaultName) {
|
||||
const input = document.getElementById(`whitelist-input-${vaultName}`);
|
||||
const container = document.getElementById(`whitelist-items-${vaultName}`);
|
||||
const includeHiddenCheckbox = document.getElementById(`hidden-include-${vaultName}`);
|
||||
|
||||
if (!input || !container) return;
|
||||
|
||||
@@ -3378,6 +3393,11 @@
|
||||
return;
|
||||
}
|
||||
|
||||
// Auto-uncheck "Afficher tous les fichiers cachés" when adding to whitelist
|
||||
if (includeHiddenCheckbox && includeHiddenCheckbox.checked) {
|
||||
includeHiddenCheckbox.checked = false;
|
||||
}
|
||||
|
||||
const item = createWhitelistItem(vaultName, normalizedValue);
|
||||
container.appendChild(item);
|
||||
input.value = "";
|
||||
@@ -3414,6 +3434,7 @@
|
||||
});
|
||||
|
||||
await Promise.all(promises);
|
||||
modifiedVaults.clear();
|
||||
showToast("✓ Paramètres sauvegardés", "success");
|
||||
} catch (err) {
|
||||
console.error("Failed to save hidden files settings:", err);
|
||||
@@ -3434,9 +3455,18 @@
|
||||
// Update button text to show reindexing phase
|
||||
if (btn) { btn.textContent = "⏳ Réindexation..."; }
|
||||
|
||||
// Then trigger reindex with saved settings
|
||||
await api("/api/index/reload");
|
||||
showToast("✓ Réindexation terminée", "success");
|
||||
// Reindex only modified vaults if any, otherwise reindex all
|
||||
if (modifiedVaults.size > 0) {
|
||||
const vaultsToReindex = Array.from(modifiedVaults);
|
||||
for (const vaultName of vaultsToReindex) {
|
||||
await api(`/api/index/reload/${encodeURIComponent(vaultName)}`);
|
||||
}
|
||||
showToast(`✓ Réindexation terminée (${vaultsToReindex.length} vault${vaultsToReindex.length > 1 ? 's' : ''})`, "success");
|
||||
} else {
|
||||
await api("/api/index/reload");
|
||||
showToast("✓ Réindexation terminée", "success");
|
||||
}
|
||||
|
||||
loadDiagnostics();
|
||||
await Promise.all([loadVaults(), loadTags()]);
|
||||
} catch (err) {
|
||||
|
||||
Reference in New Issue
Block a user