diff --git a/models.js b/models.js index db6b55b..8b98b0f 100644 --- a/models.js +++ b/models.js @@ -213,6 +213,8 @@ class Post extends ATProtoRecord { 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 index ecc4093..dcfd700 100644 --- a/post_component.js +++ b/post_component.js @@ -304,7 +304,12 @@ class PostComponent { 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 index a2a8f56..30545ab 100644 --- a/skythread.js +++ b/skythread.js @@ -486,7 +486,7 @@ function loadThread(url, postId, nodeToUpdate) { }); } -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 @@ function loadMastodonThread(url) { 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 @@ function loadMastodonThread(url) { 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);