05/18 Enhanced codes and functionalities 3

This commit is contained in:
2026-05-18 11:56:52 -04:00
parent 4364daecef
commit aa8ea397d6
2 changed files with 52 additions and 11 deletions
+33 -4
View File
@@ -130,9 +130,11 @@ const Vault = (() => {
res = await fetch(path, merged);
}
if (!res.ok && res.status !== 404) {
if (!res.ok) {
const err = await res.json().catch(() => ({}));
throw new Error(err.error || `HTTP ${res.status}`);
const e = new Error(err.error || `HTTP ${res.status}`);
e.status = res.status;
throw e;
}
return res;
}
@@ -974,7 +976,35 @@ const Vault = (() => {
let _importViewInitialised = false;
function _resetImportView() {
_importRows = [];
const fileInput = document.getElementById("import-file-input");
const fileNameEl = document.getElementById("import-file-name");
const previewEl = document.getElementById("import-preview");
const confirmBtn = document.getElementById("btn-import-confirm");
const resultEl = document.getElementById("import-result");
if (fileInput) fileInput.value = "";
if (fileNameEl) fileNameEl.textContent = "No file chosen";
if (previewEl) {
previewEl.innerHTML = "";
previewEl.classList.add("hidden");
}
if (confirmBtn) {
confirmBtn.disabled = true;
confirmBtn.textContent = "Import items";
delete confirmBtn.dataset.mode;
}
if (resultEl) {
resultEl.innerHTML = "";
resultEl.classList.add("hidden");
}
}
function loadImportExportView() {
// Reset import panel state every time the view is entered so a previous
// import result or file preview is never shown stale on re-entry.
_resetImportView();
if (_importViewInitialised) return;
_importViewInitialised = true;
@@ -1238,7 +1268,6 @@ const Vault = (() => {
});
if (!res) return;
const data = await res.json();
if (!res.ok) throw new Error(data.error || "Import failed.");
resultEl.innerHTML = `✅ Imported <strong>${data.imported}</strong> item(s)${data.skipped ? `, skipped ${data.skipped} malformed row(s)` : ""}.`;
resultEl.className = "import-result import-result-ok";
@@ -3987,4 +4016,4 @@ const Vault = (() => {
}
})();
document.addEventListener("DOMContentLoaded", Vault.init);
document.addEventListener("DOMContentLoaded", Vault.init);