const loadingContainer = document.getElementById("loading-container");
const alertPlaceholder = document.getElementById('liveAlertPlaceholder');
const interactiveElems = document.querySelectorAll('button, input, select');
const appendAlert = (errorHeader, id, message, type) => {
const alertDiv = document.createElement('div');
alertDiv.classList.add("alert", `alert-${type}`, "alert-dismissible", "fade", "show", "d-flex", "flex-column", "shadow-sm");
alertDiv.setAttribute("role", "alert");
alertDiv.setAttribute("id", id);
alertDiv.style.maxWidth = "320px";
alertDiv.innerHTML = [
`
`,
`
`,
`
${errorHeader}`,
`
`,
`
`,
`
`,
` ${message}
`,
].join('');
window.scrollTo(0, 0);
alertPlaceholder.append(alertDiv);
setTimeout(function () {
bootstrap.Alert.getOrCreateInstance(document.getElementById(`${id}`)).close();
}, 5000);
}
function toggleInteractables(isBlocking, excludedOnNotBlockingIds = [], otherBlockingUpdates = () => {}) {
if (isBlocking) {
loadingContainer.classList.add("d-flex");
interactiveElems.forEach(elems => {
elems.disabled = true;
});
window.scrollTo(0, 0);
otherBlockingUpdates();
return;
}
setTimeout(() => {
loadingContainer.classList.remove("d-flex");
interactiveElems.forEach(elems => {
!excludedOnNotBlockingIds.includes(elems.id) ? elems.disabled = false : null;
});
otherBlockingUpdates();
}, 250);
}
function showResetSavedSessionsModal() {
let sessions = localStorage.getItem("sessions");
if (sessions === null) {
appendAlert('Error!', 'noSavedSessions', `No Saved Sessions Exist!`, 'danger');
return;
}
sessions = JSON.parse(sessions);
const resetSavedSessionsModal = new bootstrap.Modal(document.getElementById('resetSavedSessionsModal'), {
focus: true, keyboard: false
});
let select = document.getElementById("delete-session-dropdown");
select.innerHTML = "";
Object.keys(sessions).forEach((alias) => {
let option = document.createElement("option");
option.value = alias;
option.innerHTML = alias;
select.appendChild(option);
});
document.getElementById("selected-session").innerText = `"${document.getElementById("delete-session-dropdown").value}"`;
resetSavedSessionsModal.show();
}
function resetSavedSessions() {
bootstrap.Modal.getInstance(document.getElementById("resetSavedSessionsModal")).hide();
const sessions = JSON.parse(localStorage.getItem("sessions"));
if (sessions === null) {
appendAlert('Error!', 'noSavedSessions', `No Saved Sessions Exist!`, 'danger');
return;
}
const activeTab = document.getElementById("reset-tabs").querySelector(".nav-link.active").getAttribute("id");
if (activeTab === "delete-one-tab") {
const deleteOneConfirmation = document.getElementById("delete-one-confirmation").value;
if (deleteOneConfirmation !== document.getElementById("delete-session-dropdown").value) {
document.getElementById("resetSavedSessionsModal").querySelectorAll("form").forEach(form => {
form.reset();
})
appendAlert('Error!', 'noSavedSessions', `Invalid Confirmation Entry!`, 'danger');
return;
}
delete sessions[document.getElementById("delete-session-dropdown").value];
Object.keys(sessions).length === 0
? localStorage.removeItem("sessions")
: localStorage.setItem("sessions", JSON.stringify(sessions));
} else {
const deleteAllConfirmation = document.getElementById("delete-all-confirmation").value;
if (deleteAllConfirmation !== "Delete All") {
document.getElementById("resetSavedSessionsModal").querySelectorAll("form").forEach(form => {
form.reset();
})
appendAlert('Error!', 'noSavedSessions', `Invalid Confirmation Entry!`, 'danger');
return;
}
localStorage.removeItem("sessions");
}
appendAlert('Success!', 'resetCookies', `Saved Session Reset Successful!`, 'success');
setTimeout(() => {
location.reload();
}, 750);
}
document.getElementById("close-reset-modal").addEventListener("click", () => {
document.getElementById("resetSavedSessionsModal").querySelectorAll("form").forEach(form => {
form.reset();
})
});
document.getElementById("delete-session-dropdown").addEventListener("change", () => {
document.getElementById("selected-session").innerText =
`"${document.getElementById("delete-session-dropdown").value}"`;
});