if (typeof showNewCommentCounts === 'undefined') { function showNewCommentCounts(postId, newTotal) { const comments = JSON.parse(localStorage.getItem("comment-counts")) || {} const lastCount = comments[postId] if (lastCount) { const newComments = newTotal - lastCount.c if (newComments > 0) { elems = document.getElementsByClassName(`${postId}-new-comments`) for (const elem of elems) { elem.textContent = ` (+${newComments})` elem.classList.remove("d-none") } } } } const LAST_CACHE_CLEAN_ID = "last-cache-clean" const EXPIRE_INTERVAL_MILLIS = 5 * 24 * 60 * 60 * 1000 const CACHE_CLEAN_INTERVAL = 60 * 60 * 1000 function cleanCache() { const lastCacheClean = JSON.parse(localStorage.getItem(LAST_CACHE_CLEAN_ID)) || Date.now() const now = Date.now() if (now - lastCacheClean > CACHE_CLEAN_INTERVAL) { const comments = JSON.parse(localStorage.getItem("comment-counts")) || {} for (let [key, value] of Object.entries(comments)) { if (now - value.t > EXPIRE_INTERVAL_MILLIS) { delete comments[key] } } localStorage.setItem("comment-counts", JSON.stringify(comments)) } localStorage.setItem(LAST_CACHE_CLEAN_ID, JSON.stringify(now)) } setTimeout(cleanCache, 500) }