From ace68b8a600a79d69bb20e0efe54eaa7a01b69c4 Mon Sep 17 00:00:00 2001 From: Kuba Suder Date: Fri, 21 Jun 2024 18:51:17 +0000 Subject: [PATCH] loading subthreads ("load more replies") --- models.js | 2 ++ post_component.js | 7 ++++++- skythread.js | 10 +++++++--- 3 file(s) changed, 15 insertion(s)(+), 4 deletion(s)(-) diff --git a/models.js b/models.js --- a/models.js +++ b/models.js @@ -213,6 +213,8 @@ likeCount: post.favourites_count, repostCount: post.reblogs_count, replyCount: post.replies_count + }, { + mastodonURL: post.url }); if (post.replies) { diff --git a/post_component.js b/post_component.js --- a/post_component.js +++ b/post_component.js @@ -304,7 +304,12 @@ link.addEventListener('click', (e) => { e.preventDefault(); link.innerHTML = ``; - loadThread(this.post.author.handle, this.post.rkey, loadMore.parentNode.parentNode); + + if (this.post.mastodonURL) { + loadMastodonThread(this.post.mastodonURL, loadMore.parentNode.parentNode); + } else { + loadThread(this.post.author.handle, this.post.rkey, loadMore.parentNode.parentNode); + } }); loadMore.appendChild(link); diff --git a/skythread.js b/skythread.js --- a/skythread.js +++ b/skythread.js @@ -486,7 +486,7 @@ }); } -function loadMastodonThread(url) { +function loadMastodonThread(url, nodeToUpdate) { let host = new URL(url).host; let postId = url.replace(/\/$/, '').split('/').reverse()[0]; let statusURL = `https://${host}/api/v1/statuses/${postId}`; @@ -504,7 +504,7 @@ let root = Post.parseMastodonThread(json[0], json[1]); window.root = root; - if (root instanceof Post) { + if (!nodeToUpdate && root instanceof Post) { setPageTitle(root); if (root.parent) { @@ -517,7 +517,11 @@ let list = component.buildElement('thread'); hideLoader(); - $id('thread').appendChild(list); + if (nodeToUpdate) { + nodeToUpdate.querySelector('.content').replaceWith(list.querySelector('.content')); + } else { + $id('thread').appendChild(list); + } }).catch(error => { hideLoader(); console.log(error); -- tangled.sh