currentToasts = []; var forceSkipReload = false; forceSkipReload = localStorage.getItem('forceSkipReload') === 'true'; if(forceSkipReload) { setTimeout(() => { createNewToast('Auto reload still disabled, click version number to reenable.', 'text-bg-warning', 3000, false); }, 1000); } /** * Generic function to create a new toast * @param {String} message The message to be displayed * @param {String} colorSelector The bootstrap color selector class, can be one of the following: text-bg-primary, text-bg-success, text-bg-danger, text-bg-warning, text-bg-info * @param {Number} autoHideTime The time in milliseconds to auto hide the toast, default is 3000 * @param {Boolean} autoReload Should the page reload after the toast is hidden, default is true (for compatibility with old code) * @returns {String} The id of the created toast, format: toast- */ function createNewToast(message, colorSelector, autoHideTime = 1500, autoReload = true) { const targetContainer = document.getElementById('toastMainController'); const masterToast = document.getElementById('masterToast'); const newToast = masterToast.cloneNode(true); newToast.classList.add(colorSelector); newToast.id = `toast-${currentToasts.length}`; console.log(newToast.childNodes[1]); newToast.childNodes[1].childNodes[1].innerHTML = message; targetContainer.appendChild(newToast); currentToasts.push(newToast); $(newToast).toast('show'); try { loadPageData(); } catch (error) { console.debug("Page does not support new data loading.") } setTimeout(() => { destroyToast(newToast.id); if (autoReload && !forceSkipReload) { location.reload(); } }, autoHideTime); return newToast.id; } /** * Generic function to destroy a toast * @param {String} id The id of the toast to destroy */ function destroyToast(id) { const targetContainer = document.getElementById('toastMainController'); const targetToast = document.getElementById(id); targetContainer.removeChild(targetToast); currentToasts.splice(currentToasts.indexOf(targetToast), 1); } // Moved here function normalizeToast() { console.warn('Something is using the deprecated function normalizeToast(). Please use createNewToast() instead.'); $('#generalToast').removeClass('text-bg-primary'); $('#generalToast').removeClass('text-bg-success'); $('#generalToast').removeClass('text-bg-danger'); $('#generalToast').removeClass('text-bg-warning'); $('#generalToast').removeClass('text-bg-info'); } /** * Function to handle the "secret" function to globally disable auto reload */ function toggleAutoReload() { forceSkipReload = !forceSkipReload; if(forceSkipReload) { createNewToast('Auto reload disabled', 'text-bg-warning', 1500, false); } else { createNewToast('Auto reload enabled', 'text-bg-success', 1500, false); } // Store the value in local storage localStorage.setItem('forceSkipReload', forceSkipReload); }