From ddd5b29dda41d6596c97e0d91a444dde81f84868 Mon Sep 17 00:00:00 2001 From: Thomas Lynch Date: Mon, 18 Apr 2022 17:57:31 +1000 Subject: [PATCH] hide/toggle "x posts omiited" text when expanded return to correct number of preview posts e.g. if post has less/no preview replies --- gulp/res/js/filters.js | 1 - gulp/res/js/omitted.js | 26 ++++++++++++++++---------- gulp/res/js/time.js | 1 - views/mixins/post.pug | 7 ++++--- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/gulp/res/js/filters.js b/gulp/res/js/filters.js index e018f0dd..3c30ad47 100644 --- a/gulp/res/js/filters.js +++ b/gulp/res/js/filters.js @@ -316,7 +316,6 @@ togglePostsHidden(getHiddenElems(), true); window.addEventListener('addPost', function(e) { const newPost = e.detail.post; -console.log(newPost) if (anyFilterMatches(newPost)) { newPost.classList.add('hidden'); } diff --git a/gulp/res/js/omitted.js b/gulp/res/js/omitted.js index 9dcb396a..4f9e5a38 100644 --- a/gulp/res/js/omitted.js +++ b/gulp/res/js/omitted.js @@ -3,9 +3,12 @@ window.addEventListener('DOMContentLoaded', () => { let loading = {}; const hideOmitted = (e) => { + e.target.nextSibling.style.display = 'unset'; const thread = e.target.closest('.thread'); - let replies = Array.from(thread.querySelectorAll('.post-container')); - replies = replies.slice(1, replies.length-5); + let replies = Array.from(thread.querySelectorAll('.post-container:not(.op)')); + if (e.target.dataset.shown > 0) { + replies = replies.slice(0, -parseInt(e.target.dataset.shown)); + } replies.forEach(r => { r.previousSibling.remove(); r.remove(); @@ -18,16 +21,17 @@ window.addEventListener('DOMContentLoaded', () => { const threadId = e.target.dataset.thread; const board = e.target.dataset.board; const parentPost = e.target.closest('.post-container'); - const firstPreviewReply = parentPost.nextSibling.nextSibling; //the first preview reply + const firstPreviewReply = parentPost.nextSibling && parentPost.nextSibling.nextSibling; //the first preview reply const jsonPath = `/${board}/thread/${threadId}.json`; let hovercache = localStorage.getItem(`hovercache-${jsonPath}`); let replies; if (hovercache) { hovercache = JSON.parse(hovercache); //if we have the first preview reply in cache, the cache is fresh enough to show the omitted posts - if (hovercache.replies.find(r => r.postId == firstPreviewReply.dataset.postId)) { + if (firstPreviewReply && hovercache.replies.find(r => r.postId == firstPreviewReply.dataset.postId)) { replies = hovercache.replies; } + //note: will always fetch (on new page load) for sticky preview replies = 0 } if (!replies) { e.target.style.cursor = 'wait'; @@ -56,15 +60,17 @@ window.addEventListener('DOMContentLoaded', () => { if (!replies) { return; } + e.target.nextSibling.style.display = 'none'; e.target.src = '/file/minus.png'; e.target.dataset.open = true; - replies - .reverse() - .filter(r => r.postId < firstPreviewReply.dataset.postId) - .forEach(r => { + replies = replies.reverse(); + if (firstPreviewReply) { + replies = replies.filter(r => r.postId < firstPreviewReply.dataset.postId); + } + replies.forEach(r => { newPost(r, { - insertPoint: parentPost.nextSibling, //anchor before first previewreply - insertPosition: 'beforebegin', + insertPoint: firstPreviewReply ? parentPost.nextSibling : parentPost, + insertPosition: firstPreviewReply ? 'beforebegin' : 'afterend', }); }); }; diff --git a/gulp/res/js/time.js b/gulp/res/js/time.js index 96029344..5c2adcdb 100644 --- a/gulp/res/js/time.js +++ b/gulp/res/js/time.js @@ -132,7 +132,6 @@ window.addEventListener('addPost', function(e) { }); window.addEventListener('showModal', function(e) { -console.log(e.detail, e.detail.modal) handleDateUpdates(e.detail.modal); }); diff --git a/views/mixins/post.pug b/views/mixins/post.pug index 65a03a25..019414c7 100644 --- a/views/mixins/post.pug +++ b/views/mixins/post.pug @@ -158,11 +158,12 @@ mixin post(post, truncate, manage=false, globalmanage=false, ban=false, overboar | Message too long. #[a.viewfulltext(href=`${postURL}#${post.postId}`) View the full text] if post.omittedposts || post.omittedfiles div.cb.mt-5.ml-5 - img.dummy-link.expand-omitted(height='18' width='18' data-board=post.board data-thread=post.postId src='/file/plus.png') + img.dummy-link.expand-omitted(height='18' width='18' data-shown=post.replies.length data-board=post.board data-thread=post.postId src='/file/plus.png') - const ompo = post.omittedposts; - const omfi = post.omittedfiles; - | #{ompo} repl#{ompo > 1 ? 'ies' : 'y'} - | #{omfi > 0 ? ` and ${omfi} file${omfi > 1 ? 's' : ''}` : ''} omitted. + span + | #{ompo} repl#{ompo > 1 ? 'ies' : 'y'} + | #{omfi > 0 ? ` and ${omfi} file${omfi > 1 ? 's' : ''}` : ''} omitted. | #[a(href=postURL) View the full thread] if post.previewbacklinks != null if post.previewbacklinks.length > 0