From 02b04a4b4d9aeec7c671d9b25cb7e8577cb4d88c Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sun, 13 Jun 2021 01:52:05 -0600 Subject: [PATCH] Update RemoteProfile component, implement pagination --- .../assets/js/components/RemoteProfile.vue | 64 ++++++++++++++++++- 1 file changed, 61 insertions(+), 3 deletions(-) diff --git a/resources/assets/js/components/RemoteProfile.vue b/resources/assets/js/components/RemoteProfile.vue index d8289761b..ec52156d2 100644 --- a/resources/assets/js/components/RemoteProfile.vue +++ b/resources/assets/js/components/RemoteProfile.vue @@ -125,7 +125,16 @@
-

+

+ +

@@ -193,6 +202,7 @@ data() { return { id: [], + ids: [], user: false, profile: {}, feed: [], @@ -206,7 +216,9 @@ ctxMenuStatus: false, ctxMenuRelationship: false, fetchingRemotePosts: false, - showMutualFollowers: false + showMutualFollowers: false, + loadingMore: false, + showLoadMore: true } }, @@ -277,6 +289,52 @@ }); }, + loadMorePosts() { + this.loadingMore = true; + let apiUrl = '/api/pixelfed/v1/accounts/' + this.profileId + '/statuses'; + axios.get(apiUrl, { + params: { + only_media: true, + max_id: this.max_id, + } + }) + .then(res => { + let data = res.data + .filter(status => this.ids.indexOf(status.id) === -1) + .filter(status => status.media_attachments.length > 0) + .map(status => { + return { + id: status.id, + caption: { + text: status.content_text, + html: status.content + }, + count: { + likes: status.favourites_count, + shares: status.reblogs_count, + comments: status.reply_count + }, + thumb: status.media_attachments[0].url, + media: status.media_attachments, + timestamp: status.created_at, + type: status.pf_type, + url: status.url, + sensitive: status.sensitive, + cw: status.sensitive, + spoiler_text: status.spoiler_text + } + }); + let ids = data.map(status => status.id); + this.ids.push(...ids); + this.max_id = Math.min(...ids); + this.feed.push(...data); + this.loadingMore = false; + }).catch(err => { + this.loadingMore = false; + this.showLoadMore = false; + }); + }, + fetchRelationships() { if(document.querySelectorAll('body')[0].classList.contains('loggedIn') == false) { return; @@ -509,4 +567,4 @@ max-width: 1050px; } } - \ No newline at end of file +