From 713aa5fd7de681031f0f3ccd964269210ca7dcee Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 4 Mar 2023 22:20:16 -0700 Subject: [PATCH 01/17] Update ApiV1Controller, add cursor pagination and pagination link headers to account/{id}/followers and account/{id}/following endpoints with legacy support for `page=` simple pagination --- app/Http/Controllers/Api/ApiV1Controller.php | 114 ++++++++++++++++--- 1 file changed, 100 insertions(+), 14 deletions(-) diff --git a/app/Http/Controllers/Api/ApiV1Controller.php b/app/Http/Controllers/Api/ApiV1Controller.php index b4f1817a7..ce76bf7fc 100644 --- a/app/Http/Controllers/Api/ApiV1Controller.php +++ b/app/Http/Controllers/Api/ApiV1Controller.php @@ -467,6 +467,10 @@ class ApiV1Controller extends Controller $account = AccountService::get($id); abort_if(!$account, 404); $pid = $request->user()->profile_id; + $this->validate($request, [ + 'limit' => 'sometimes|integer|min:1|max:80' + ]); + $limit = $request->input('limit', 10); if(intval($pid) !== intval($account['id'])) { if($account['locked']) { @@ -479,18 +483,56 @@ class ApiV1Controller extends Controller return []; } - if($request->has('page') && $request->page >= 5) { - return []; + if($request->has('page') && $request->user()->is_admin == false) { + $page = (int) $request->input('page'); + if(($page * $limit) >= 100) { + return []; + } } } + if($request->has('page')) { + $res = DB::table('followers') + ->select('id', 'profile_id', 'following_id') + ->whereFollowingId($account['id']) + ->orderByDesc('id') + ->simplePaginate($limit) + ->map(function($follower) { + return AccountService::getMastodon($follower->profile_id, true); + }) + ->filter(function($account) { + return $account && isset($account['id']); + }) + ->values() + ->toArray(); - $res = DB::table('followers') + return $this->json($res); + } + + $paginator = DB::table('followers') ->select('id', 'profile_id', 'following_id') ->whereFollowingId($account['id']) ->orderByDesc('id') - ->simplePaginate(10) - ->map(function($follower) { - return AccountService::getMastodon($follower->profile_id); + ->cursorPaginate($limit) + ->withQueryString(); + + $link = null; + + if($paginator->onFirstPage()) { + if($paginator->hasMorePages()) { + $link = '<'.$paginator->nextPageUrl().'>; rel="prev"'; + } + } else { + if($paginator->previousPageUrl()) { + $link = '<'.$paginator->previousPageUrl().'>; rel="next"'; + } + + if($paginator->hasMorePages()) { + $link .= ($link ? ',' : '') . '<'.$paginator->nextPageUrl().'>; rel="prev"'; + } + } + + $res = $paginator->map(function($follower) { + return AccountService::get($follower->profile_id, true); }) ->filter(function($account) { return $account && isset($account['id']); @@ -498,7 +540,8 @@ class ApiV1Controller extends Controller ->values() ->toArray(); - return $this->json($res); + $headers = isset($link) ? ['Link' => $link] : []; + return $this->json($res, 200, $headers); } /** @@ -514,6 +557,10 @@ class ApiV1Controller extends Controller $account = AccountService::get($id); abort_if(!$account, 404); $pid = $request->user()->profile_id; + $this->validate($request, [ + 'limit' => 'sometimes|integer|min:1|max:80' + ]); + $limit = $request->input('limit', 10); if(intval($pid) !== intval($account['id'])) { if($account['locked']) { @@ -526,18 +573,56 @@ class ApiV1Controller extends Controller return []; } - if($request->has('page') && $request->page >= 5) { - return []; + if($request->has('page') && $request->user()->is_admin == false) { + $page = (int) $request->input('page'); + if(($page * $limit) >= 100) { + return []; + } } } - $res = DB::table('followers') + if($request->has('page')) { + $res = DB::table('followers') + ->select('id', 'profile_id', 'following_id') + ->whereProfileId($account['id']) + ->orderByDesc('id') + ->simplePaginate($limit) + ->map(function($follower) { + return AccountService::get($follower->following_id, true); + }) + ->filter(function($account) { + return $account && isset($account['id']); + }) + ->values() + ->toArray(); + return $this->json($res); + } + + $paginator = DB::table('followers') ->select('id', 'profile_id', 'following_id') ->whereProfileId($account['id']) ->orderByDesc('id') - ->simplePaginate(10) - ->map(function($follower) { - return AccountService::get($follower->following_id); + ->cursorPaginate($limit) + ->withQueryString(); + + $link = null; + + if($paginator->onFirstPage()) { + if($paginator->hasMorePages()) { + $link = '<'.$paginator->nextPageUrl().'>; rel="prev"'; + } + } else { + if($paginator->previousPageUrl()) { + $link = '<'.$paginator->previousPageUrl().'>; rel="next"'; + } + + if($paginator->hasMorePages()) { + $link .= ($link ? ',' : '') . '<'.$paginator->nextPageUrl().'>; rel="prev"'; + } + } + + $res = $paginator->map(function($follower) { + return AccountService::get($follower->following_id, true); }) ->filter(function($account) { return $account && isset($account['id']); @@ -545,7 +630,8 @@ class ApiV1Controller extends Controller ->values() ->toArray(); - return $this->json($res); + $headers = isset($link) ? ['Link' => $link] : []; + return $this->json($res, 200, $headers); } /** From 7a1495e6f6091c50f94bb53fcd67c1185251d693 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 4 Mar 2023 22:21:38 -0700 Subject: [PATCH 02/17] Update legacy Profile component to use new cursor pagination for following/follower modals --- resources/assets/js/components/Profile.vue | 136 +++++++++++---------- 1 file changed, 71 insertions(+), 65 deletions(-) diff --git a/resources/assets/js/components/Profile.vue b/resources/assets/js/components/Profile.vue index d7fe8f054..5558bae0b 100644 --- a/resources/assets/js/components/Profile.vue +++ b/resources/assets/js/components/Profile.vue @@ -133,10 +133,10 @@ -

- {{profile.display_name}} - {{profile.pronouns.join('/')}} -

+
+
{{profile.display_name}}
+
{{profile.pronouns.join('/')}}
+

{{formatWebsite(profile.website)}}

@@ -154,8 +154,8 @@ -

-

+

+

@@ -339,16 +339,10 @@ {{profileUsername}} is not following yet

-
- - - - -
- +

@@ -368,7 +362,7 @@

-
+

No Results Found

@@ -394,7 +388,7 @@ dialog-class="follow-modal" >
-
+

{{profileUsername}} has no followers yet

@@ -403,7 +397,7 @@
- +

@@ -593,6 +587,7 @@ + + diff --git a/resources/assets/components/partials/profile/ProfileFollowing.vue b/resources/assets/components/partials/profile/ProfileFollowing.vue new file mode 100644 index 000000000..f9704921b --- /dev/null +++ b/resources/assets/components/partials/profile/ProfileFollowing.vue @@ -0,0 +1,256 @@ + + + + + From 3a3a01b21d593cb5766a9c97b64851fa3a6048da Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 4 Mar 2023 22:37:11 -0700 Subject: [PATCH 04/17] Remove deprecated components/views --- .../assets/js/components/RemoteProfile.vue | 746 ------------------ resources/assets/js/rempro.js | 29 - resources/views/profile/remote.blade.php | 16 - 3 files changed, 791 deletions(-) delete mode 100644 resources/assets/js/components/RemoteProfile.vue delete mode 100644 resources/assets/js/rempro.js delete mode 100644 resources/views/profile/remote.blade.php diff --git a/resources/assets/js/components/RemoteProfile.vue b/resources/assets/js/components/RemoteProfile.vue deleted file mode 100644 index 5f56370b6..000000000 --- a/resources/assets/js/components/RemoteProfile.vue +++ /dev/null @@ -1,746 +0,0 @@ - - - - - diff --git a/resources/assets/js/rempro.js b/resources/assets/js/rempro.js deleted file mode 100644 index 187d695c6..000000000 --- a/resources/assets/js/rempro.js +++ /dev/null @@ -1,29 +0,0 @@ -Vue.component( - 'photo-presenter', - require('./components/presenter/PhotoPresenter.vue').default -); - -Vue.component( - 'video-presenter', - require('./components/presenter/VideoPresenter.vue').default -); - -Vue.component( - 'photo-album-presenter', - require('./components/presenter/PhotoAlbumPresenter.vue').default -); - -Vue.component( - 'video-album-presenter', - require('./components/presenter/VideoAlbumPresenter.vue').default -); - -Vue.component( - 'mixed-album-presenter', - require('./components/presenter/MixedAlbumPresenter.vue').default -); - -Vue.component( - 'remote-profile', - require('./components/RemoteProfile.vue').default -); diff --git a/resources/views/profile/remote.blade.php b/resources/views/profile/remote.blade.php deleted file mode 100644 index 106286b3e..000000000 --- a/resources/views/profile/remote.blade.php +++ /dev/null @@ -1,16 +0,0 @@ -@extends('layouts.app') - -@section('content') - -@endsection - -@push('meta') - -@endpush - -@push('scripts') - - -@endpush From 6c4deaba90560ebbfe58ccc4da8ba10122a485f7 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 4 Mar 2023 22:42:54 -0700 Subject: [PATCH 05/17] Remove deprecated components/views --- resources/assets/js/components/RemotePost.vue | 1523 ----------------- resources/assets/js/rempos.js | 34 - resources/views/status/remote.blade.php | 17 - 3 files changed, 1574 deletions(-) delete mode 100644 resources/assets/js/components/RemotePost.vue delete mode 100644 resources/assets/js/rempos.js delete mode 100644 resources/views/status/remote.blade.php diff --git a/resources/assets/js/components/RemotePost.vue b/resources/assets/js/components/RemotePost.vue deleted file mode 100644 index 87c516147..000000000 --- a/resources/assets/js/components/RemotePost.vue +++ /dev/null @@ -1,1523 +0,0 @@ - - - - - diff --git a/resources/assets/js/rempos.js b/resources/assets/js/rempos.js deleted file mode 100644 index 41bf90d0b..000000000 --- a/resources/assets/js/rempos.js +++ /dev/null @@ -1,34 +0,0 @@ -Vue.component( - 'photo-presenter', - require('./components/presenter/PhotoPresenter.vue').default -); - -Vue.component( - 'video-presenter', - require('./components/presenter/VideoPresenter.vue').default -); - -Vue.component( - 'photo-album-presenter', - require('./components/presenter/PhotoAlbumPresenter.vue').default -); - -Vue.component( - 'video-album-presenter', - require('./components/presenter/VideoAlbumPresenter.vue').default -); - -Vue.component( - 'mixed-album-presenter', - require('./components/presenter/MixedAlbumPresenter.vue').default -); - -Vue.component( - 'post-menu', - require('./components/PostMenu.vue').default -); - -Vue.component( - 'remote-post', - require('./components/RemotePost.vue').default -); \ No newline at end of file diff --git a/resources/views/status/remote.blade.php b/resources/views/status/remote.blade.php deleted file mode 100644 index f36a2f4be..000000000 --- a/resources/views/status/remote.blade.php +++ /dev/null @@ -1,17 +0,0 @@ -@extends('layouts.app') - -@section('content') -

- - - -@endsection - -@push('meta') - -@endpush - -@push('scripts') - - -@endpush From 1f4f8252f2e762ee199655a4b9646db86871ad23 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 4 Mar 2023 22:46:39 -0700 Subject: [PATCH 06/17] Remove deprecated api routes --- app/Http/Controllers/PublicApiController.php | 62 -------------------- routes/web.php | 2 - 2 files changed, 64 deletions(-) diff --git a/app/Http/Controllers/PublicApiController.php b/app/Http/Controllers/PublicApiController.php index 678100158..5ead0ad0f 100644 --- a/app/Http/Controllers/PublicApiController.php +++ b/app/Http/Controllers/PublicApiController.php @@ -811,68 +811,6 @@ class PublicApiController extends Controller return response()->json($res); } - public function accountFollowers(Request $request, $id) - { - abort_if(!$request->user(), 403); - $account = AccountService::get($id, true); - abort_if(!$account, 404); - $pid = $request->user()->profile_id; - - if($pid != $account['id']) { - if($account['locked']) { - if(!FollowerService::follows($pid, $account['id'])) { - return []; - } - } - - if(AccountService::hiddenFollowers($id)) { - return []; - } - - if($request->has('page') && $request->page >= 10) { - return []; - } - } - - $res = collect(FollowerService::followersPaginate($account['id'], $request->input('page', 1))) - ->map(fn($id) => AccountService::get($id, true)) - ->filter() - ->values(); - - return response()->json($res); - } - - public function accountFollowing(Request $request, $id) - { - abort_if(!$request->user(), 403); - $account = AccountService::get($id, true); - abort_if(!$account, 404); - $pid = $request->user()->profile_id; - - if($pid != $account['id']) { - if($account['locked']) { - if(!FollowerService::follows($pid, $account['id'])) { - return []; - } - } - - if(AccountService::hiddenFollowing($id)) { - return []; - } - - if($request->has('page') && $request->page >= 10) { - return []; - } - } - - $res = collect(FollowerService::followingPaginate($account['id'], $request->input('page', 1))) - ->map(fn($id) => AccountService::get($id, true)) - ->filter() - ->values(); - - return response()->json($res); - } - public function accountStatuses(Request $request, $id) { $this->validate($request, [ diff --git a/routes/web.php b/routes/web.php index 5949a708e..df0adc1ff 100644 --- a/routes/web.php +++ b/routes/web.php @@ -207,8 +207,6 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact Route::get('accounts/relationships', 'Api\ApiV1Controller@accountRelationshipsById'); Route::get('accounts/search', 'Api\ApiV1Controller@accountSearch'); Route::get('accounts/{id}/statuses', 'PublicApiController@accountStatuses'); - Route::get('accounts/{id}/following', 'PublicApiController@accountFollowing'); - Route::get('accounts/{id}/followers', 'PublicApiController@accountFollowers'); Route::post('accounts/{id}/block', 'Api\ApiV1Controller@accountBlockById'); Route::post('accounts/{id}/unblock', 'Api\ApiV1Controller@accountUnblockById'); Route::get('statuses/{id}', 'PublicApiController@getStatus'); From adc82ecab3d76b22419ad200b1b06a653f727944 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 4 Mar 2023 23:47:29 -0700 Subject: [PATCH 07/17] Update ApiV1Controller, fix link header pagination in /api/v1/statuses/{id}/favourited_by --- app/Http/Controllers/Api/ApiV1Controller.php | 44 +++++++---- .../components/partials/post/LikeModal.vue | 24 +++--- .../partials/profile/ProfileFollowers.vue | 2 + .../partials/profile/ProfileFollowing.vue | 2 + .../assets/js/components/PostComponent.vue | 76 +++++++++++++++---- 5 files changed, 109 insertions(+), 39 deletions(-) diff --git a/app/Http/Controllers/Api/ApiV1Controller.php b/app/Http/Controllers/Api/ApiV1Controller.php index ce76bf7fc..8957f6e28 100644 --- a/app/Http/Controllers/Api/ApiV1Controller.php +++ b/app/Http/Controllers/Api/ApiV1Controller.php @@ -2658,13 +2658,17 @@ class ApiV1Controller extends Controller abort_if(!$request->user(), 403); $this->validate($request, [ - 'limit' => 'nullable|integer|min:1|max:100' + 'limit' => 'nullable|integer|min:1|max:80' ]); - $limit = $request->input('limit') ?? 10; + $limit = $request->input('limit', 10); $user = $request->user(); + $pid = $user->profile_id; $status = Status::findOrFail($id); - $author = intval($status->profile_id) === intval($user->profile_id) || $user->is_admin; + $account = AccountService::get($status->profile_id, true); + abort_if(!$account, 404); + $author = intval($status->profile_id) === intval($pid) || $user->is_admin; + $napi = $request->has(self::PF_API_ENTITY_KEY); abort_if( !$status->type || @@ -2674,7 +2678,7 @@ class ApiV1Controller extends Controller if(!$author) { if($status->scope == 'private') { - abort_if(!FollowerService::follows($user->profile_id, $status->profile_id), 403); + abort_if(!FollowerService::follows($pid, $status->profile_id), 403); } else { abort_if(!in_array($status->scope, ['public','unlisted']), 403); } @@ -2696,29 +2700,39 @@ class ApiV1Controller extends Controller $headers = []; if($author && $res->hasPages()) { $links = ''; - if($res->previousPageUrl()) { - $links = '<' . $res->previousPageUrl() .'>; rel="prev"'; - } - if($res->nextPageUrl()) { - if(!empty($links)) { - $links .= ', '; + if($res->onFirstPage()) { + if($res->nextPageUrl()) { + $links = '<' . $res->nextPageUrl() .'>; rel="prev"'; + } + } else { + if($res->previousPageUrl()) { + $links = '<' . $res->previousPageUrl() .'>; rel="next"'; + } + + if($res->nextPageUrl()) { + if(!empty($links)) { + $links .= ', '; + } + $links .= '<' . $res->nextPageUrl() .'>; rel="prev"'; } - $links .= '<' . $res->nextPageUrl() .'>; rel="next"'; } $headers = ['Link' => $links]; } - $res = $res->map(function($like) use($user) { - $account = AccountService::getMastodon($like->profile_id, true); + $res = $res->map(function($like) use($pid, $napi) { + $account = $napi ? AccountService::get($like->profile_id, true) : AccountService::getMastodon($like->profile_id, true); if(!$account) { return false; } - $account['follows'] = $like->profile_id == $user->profile_id ? null : FollowerService::follows($user->profile_id, $like->profile_id); + + if($napi) { + $account['follows'] = $like->profile_id == $pid ? null : FollowerService::follows($pid, $like->profile_id); + } return $account; }) - ->filter(function($account) use($user) { + ->filter(function($account) { return $account && isset($account['id']); }) ->values(); diff --git a/resources/assets/components/partials/post/LikeModal.vue b/resources/assets/components/partials/post/LikeModal.vue index a5164752c..3c069d038 100644 --- a/resources/assets/components/partials/post/LikeModal.vue +++ b/resources/assets/components/partials/post/LikeModal.vue @@ -104,7 +104,7 @@ isFetchingMore: false, likes: [], ids: [], - page: undefined, + cursor: undefined, isUpdatingFollowState: false, followStateIndex: undefined, user: window._sharedData.user @@ -119,13 +119,14 @@ this.isFetchingMore = false; this.likes = []; this.ids = []; - this.page = undefined; + this.cursor = undefined; }, fetchLikes() { axios.get('/api/v1/statuses/'+this.status.id+'/favourited_by', { params: { - limit: 40 + limit: 40, + '_pe': 1 } }) .then(res => { @@ -133,19 +134,21 @@ this.likes = res.data; if(res.headers && res.headers.link) { const links = parseLinkHeader(res.headers.link); - if(links.next) { - this.page = links.next.cursor; + if(links.prev) { + this.cursor = links.prev.cursor; this.canLoadMore = true; } else { this.canLoadMore = false; } + } else { + this.canLoadMore = false; } this.isLoading = false; }); }, open() { - if(this.page) { + if(this.cursor) { this.clear(); } this.isOpen = true; @@ -163,7 +166,8 @@ axios.get('/api/v1/statuses/'+this.status.id+'/favourited_by', { params: { limit: 10, - cursor: this.page + cursor: this.cursor, + '_pe': 1 } }).then(res => { if(!res.data || !res.data.length) { @@ -179,11 +183,13 @@ }) if(res.headers && res.headers.link) { const links = parseLinkHeader(res.headers.link); - if(links.next) { - this.page = links.next.cursor; + if(links.prev) { + this.cursor = links.prev.cursor; } else { this.canLoadMore = false; } + } else { + this.canLoadMore = false; } this.isFetchingMore = false; }) diff --git a/resources/assets/components/partials/profile/ProfileFollowers.vue b/resources/assets/components/partials/profile/ProfileFollowers.vue index f5d833698..572ba97ea 100644 --- a/resources/assets/components/partials/profile/ProfileFollowers.vue +++ b/resources/assets/components/partials/profile/ProfileFollowers.vue @@ -151,6 +151,8 @@ } else { this.canLoadMore = false; } + } else { + this.canLoadMore = false; } this.feed.push(...res.data); this.isLoaded = true; diff --git a/resources/assets/components/partials/profile/ProfileFollowing.vue b/resources/assets/components/partials/profile/ProfileFollowing.vue index f9704921b..ae226048c 100644 --- a/resources/assets/components/partials/profile/ProfileFollowing.vue +++ b/resources/assets/components/partials/profile/ProfileFollowing.vue @@ -149,6 +149,8 @@ } else { this.canLoadMore = false; } + } else { + this.canLoadMore = false; } this.feed.push(...res.data); this.isLoaded = true; diff --git a/resources/assets/js/components/PostComponent.vue b/resources/assets/js/components/PostComponent.vue index 7d0c5a92a..073eaa996 100644 --- a/resources/assets/js/components/PostComponent.vue +++ b/resources/assets/js/components/PostComponent.vue @@ -371,7 +371,7 @@ centered title="Likes" body-class="list-group-flush py-3 px-0"> - +
+ +
`; self.content = self.content.replace(`:${emoji.shortcode}:`, img); }); - self.likesPage = 2; self.sharesPage = 2; self.showCaption = !response.data.status.sensitive; if(self.status.comments_disabled == false) { @@ -886,15 +891,35 @@ export default { window.location.href = '/login?next=' + encodeURIComponent('/p/' + this.status.shortcode); return; } - if(this.likes.length) { + if(this.likes && this.likes.length) { this.$refs.likesModal.show(); return; } - axios.get('/api/v2/likes/profile/'+this.statusUsername+'/status/'+this.statusId) + axios.get('/api/v1/statuses/'+ this.statusId + '/favourited_by', { + params: { + limit: 40, + '_pe': 1 + } + }) .then(res => { - this.likes = res.data.data; + this.likes = res.data; + + if(res.headers && res.headers.link) { + const links = parseLinkHeader(res.headers.link); + if(links.prev) { + this.likesCursor = links.prev.cursor; + this.likesCanLoadMore = true; + } else { + this.likesCanLoadMore = false; + } + } else { + this.likesCanLoadMore = false; + } this.$refs.likesModal.show(); - }); + }) + .then(() => { + setTimeout(() => { this.likedLoaded = true }, 1000); + }) }, sharesModal() { @@ -914,15 +939,36 @@ export default { }, infiniteLikesHandler($state) { - let api = '/api/v2/likes/profile/'+this.statusUsername+'/status/'+this.statusId; - axios.get(api, { + if(!this.likesCanLoadMore) { + $state.complete(); + return; + } + + axios.get('/api/v1/statuses/'+ this.statusId + '/favourited_by', { params: { - page: this.likesPage, + cursor: this.likesCursor, + limit: 20, + '_pe': 1 }, - }).then(({ data }) => { - if (data.data.length > 0) { - this.likes.push(...data.data); - this.likesPage++; + }).then(res => { + if (res && res.data.length) { + this.likes.push(...res.data); + } + + if(res.headers && res.headers.link) { + const links = parseLinkHeader(res.headers.link); + if(links.prev) { + this.likesCursor = links.prev.cursor; + this.likesCanLoadMore = true; + } else { + this.likesCanLoadMore = false; + } + } else { + this.likesCanLoadMore = false; + } + return this.likesCanLoadMore; + }).then(res => { + if(res) { $state.loaded(); } else { $state.complete(); From e346b675d4b95353fc6eaa79bc7ff66ed46695bf Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sun, 5 Mar 2023 00:21:42 -0700 Subject: [PATCH 08/17] Update ApiV1Controller, fix link header pagination in /api/v1/statuses/{id}/reblogged_by --- app/Http/Controllers/Api/ApiV1Controller.php | 50 +++++++++----- .../components/partials/post/ShareModal.vue | 24 ++++--- .../assets/js/components/PostComponent.vue | 68 ------------------- 3 files changed, 48 insertions(+), 94 deletions(-) diff --git a/app/Http/Controllers/Api/ApiV1Controller.php b/app/Http/Controllers/Api/ApiV1Controller.php index 8957f6e28..cb2a31bb9 100644 --- a/app/Http/Controllers/Api/ApiV1Controller.php +++ b/app/Http/Controllers/Api/ApiV1Controller.php @@ -527,7 +527,7 @@ class ApiV1Controller extends Controller } if($paginator->hasMorePages()) { - $link .= ($link ? ',' : '') . '<'.$paginator->nextPageUrl().'>; rel="prev"'; + $link .= ($link ? ', ' : '') . '<'.$paginator->nextPageUrl().'>; rel="prev"'; } } @@ -617,7 +617,7 @@ class ApiV1Controller extends Controller } if($paginator->hasMorePages()) { - $link .= ($link ? ',' : '') . '<'.$paginator->nextPageUrl().'>; rel="prev"'; + $link .= ($link ? ', ' : '') . '<'.$paginator->nextPageUrl().'>; rel="prev"'; } } @@ -2582,13 +2582,17 @@ class ApiV1Controller extends Controller abort_if(!$request->user(), 403); $this->validate($request, [ - 'limit' => 'nullable|integer|min:1|max:100' + 'limit' => 'sometimes|integer|min:1|max:80' ]); - $limit = $request->input('limit') ?? 10; + $limit = $request->input('limit', 10); $user = $request->user(); + $pid = $user->profile_id; $status = Status::findOrFail($id); - $author = intval($status->profile_id) === intval($user->profile_id) || $user->is_admin; + $account = AccountService::get($status->profile_id, true); + abort_if(!$account, 404); + $author = intval($status->profile_id) === intval($pid) || $user->is_admin; + $napi = $request->has(self::PF_API_ENTITY_KEY); abort_if( !$status->type || @@ -2598,10 +2602,14 @@ class ApiV1Controller extends Controller if(!$author) { if($status->scope == 'private') { - abort_if(!FollowerService::follows($user->profile_id, $status->profile_id), 403); + abort_if(!FollowerService::follows($pid, $status->profile_id), 403); } else { abort_if(!in_array($status->scope, ['public','unlisted']), 403); } + + if($request->has('cursor')) { + return $this->json([]); + } } $res = Status::where('reblog_of_id', $status->id) @@ -2616,26 +2624,34 @@ class ApiV1Controller extends Controller $headers = []; if($author && $res->hasPages()) { $links = ''; - if($res->previousPageUrl()) { - $links = '<' . $res->previousPageUrl() .'>; rel="prev"'; - } - - if($res->nextPageUrl()) { - if(!empty($links)) { - $links .= ', '; + if($res->onFirstPage()) { + if($res->nextPageUrl()) { + $links = '<' . $res->nextPageUrl() .'>; rel="prev"'; + } + } else { + if($res->previousPageUrl()) { + $links = '<' . $res->previousPageUrl() .'>; rel="next"'; + } + + if($res->nextPageUrl()) { + if(!empty($links)) { + $links .= ', '; + } + $links .= '<' . $res->nextPageUrl() .'>; rel="prev"'; } - $links .= '<' . $res->nextPageUrl() .'>; rel="next"'; } $headers = ['Link' => $links]; } - $res = $res->map(function($status) use($user) { - $account = AccountService::getMastodon($status->profile_id, true); + $res = $res->map(function($status) use($pid, $napi) { + $account = $napi ? AccountService::get($status->profile_id, true) : AccountService::getMastodon($status->profile_id, true); if(!$account) { return false; } - $account['follows'] = $status->profile_id == $user->profile_id ? null : FollowerService::follows($user->profile_id, $status->profile_id); + if($napi) { + $account['follows'] = $status->profile_id == $pid ? null : FollowerService::follows($pid, $status->profile_id); + } return $account; }) ->filter(function($account) { diff --git a/resources/assets/components/partials/post/ShareModal.vue b/resources/assets/components/partials/post/ShareModal.vue index f9301d2b4..cc77b83cb 100644 --- a/resources/assets/components/partials/post/ShareModal.vue +++ b/resources/assets/components/partials/post/ShareModal.vue @@ -104,7 +104,7 @@ isFetchingMore: false, likes: [], ids: [], - page: undefined, + cursor: undefined, isUpdatingFollowState: false, followStateIndex: undefined, user: window._sharedData.user @@ -119,13 +119,14 @@ this.isFetchingMore = false; this.likes = []; this.ids = []; - this.page = undefined; + this.cursor = undefined; }, fetchShares() { axios.get('/api/v1/statuses/'+this.status.id+'/reblogged_by', { params: { - limit: 40 + limit: 40, + '_pe': 1 } }) .then(res => { @@ -133,19 +134,21 @@ this.likes = res.data; if(res.headers && res.headers.link) { const links = parseLinkHeader(res.headers.link); - if(links.next) { - this.page = links.next.cursor; + if(links.prev) { + this.cursor = links.prev.cursor; this.canLoadMore = true; } else { this.canLoadMore = false; } + } else { + this.canLoadMore = false; } this.isLoading = false; }); }, open() { - if(this.page) { + if(this.cursor) { this.clear(); } this.isOpen = true; @@ -163,7 +166,8 @@ axios.get('/api/v1/statuses/'+this.status.id+'/reblogged_by', { params: { limit: 10, - cursor: this.page + cursor: this.cursor, + '_pe': 1 } }).then(res => { if(!res.data || !res.data.length) { @@ -179,11 +183,13 @@ }) if(res.headers && res.headers.link) { const links = parseLinkHeader(res.headers.link); - if(links.next) { - this.page = links.next.cursor; + if(links.prev) { + this.cursor = links.prev.cursor; } else { this.canLoadMore = false; } + } else { + this.canLoadMore = false; } this.isFetchingMore = false; }) diff --git a/resources/assets/js/components/PostComponent.vue b/resources/assets/js/components/PostComponent.vue index 073eaa996..9aec62985 100644 --- a/resources/assets/js/components/PostComponent.vue +++ b/resources/assets/js/components/PostComponent.vue @@ -401,40 +401,6 @@
- -
-
-
- - - -
-
-

- - {{user.username}} - -

-

- {{user.display_name}} - -

-
-

-
-
-
- -
-
-
-
- `; self.content = self.content.replace(`:${emoji.shortcode}:`, img); }); - self.sharesPage = 2; self.showCaption = !response.data.status.sensitive; if(self.status.comments_disabled == false) { self.showComments = true; @@ -922,22 +886,6 @@ export default { }) }, - sharesModal() { - if(this.status.reblogs_count == 0 || $('body').hasClass('loggedIn') == false) { - window.location.href = '/login?next=' + encodeURIComponent('/p/' + this.status.shortcode); - return; - } - if(this.shares.length) { - this.$refs.sharesModal.show(); - return; - } - axios.get('/api/v2/shares/profile/'+this.statusUsername+'/status/'+this.statusId) - .then(res => { - this.shares = res.data.data; - this.$refs.sharesModal.show(); - }); - }, - infiniteLikesHandler($state) { if(!this.likesCanLoadMore) { $state.complete(); @@ -976,22 +924,6 @@ export default { }); }, - infiniteSharesHandler($state) { - axios.get('/api/v2/shares/profile/'+this.statusUsername+'/status/'+this.statusId, { - params: { - page: this.sharesPage, - }, - }).then(({ data }) => { - if (data.data.length > 0) { - this.shares.push(...data.data); - this.sharesPage++; - $state.loaded(); - } else { - $state.complete(); - } - }); - }, - likeStatus(event) { if($('body').hasClass('loggedIn') == false) { window.location.href = '/login?next=' + encodeURIComponent(window.location.pathname); From 7043cefdd4e075600b3852e2c97c0940b0fe461b Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sun, 5 Mar 2023 00:27:59 -0700 Subject: [PATCH 09/17] Remove deprecated api routes --- app/Http/Controllers/PublicApiController.php | 65 -------------------- routes/web.php | 4 -- 2 files changed, 69 deletions(-) diff --git a/app/Http/Controllers/PublicApiController.php b/app/Http/Controllers/PublicApiController.php index 5ead0ad0f..ff7edd5ae 100644 --- a/app/Http/Controllers/PublicApiController.php +++ b/app/Http/Controllers/PublicApiController.php @@ -62,36 +62,6 @@ class PublicApiController extends Controller } } - protected function getLikes($status) - { - if(false == Auth::check()) { - return []; - } else { - $profile = Auth::user()->profile; - if($profile->status) { - return []; - } - $likes = $status->likedBy()->orderBy('created_at','desc')->paginate(10); - $collection = new Fractal\Resource\Collection($likes, new AccountTransformer()); - return $this->fractal->createData($collection)->toArray(); - } - } - - protected function getShares($status) - { - if(false == Auth::check()) { - return []; - } else { - $profile = Auth::user()->profile; - if($profile->status) { - return []; - } - $shares = $status->sharedBy()->orderBy('created_at','desc')->paginate(10); - $collection = new Fractal\Resource\Collection($shares, new AccountTransformer()); - return $this->fractal->createData($collection)->toArray(); - } - } - public function getStatus(Request $request, $id) { abort_if(!$request->user(), 403); @@ -216,41 +186,6 @@ class PublicApiController extends Controller return response()->json($res, 200, [], JSON_PRETTY_PRINT); } - public function statusLikes(Request $request, $username, $id) - { - abort_if(!$request->user(), 404); - $status = Status::findOrFail($id); - $this->scopeCheck($status->profile, $status); - $page = $request->input('page'); - if($page && $page >= 3 && $request->user()->profile_id != $status->profile_id) { - return response()->json([ - 'data' => [] - ]); - } - $likes = $this->getLikes($status); - return response()->json([ - 'data' => $likes - ]); - } - - public function statusShares(Request $request, $username, $id) - { - abort_if(!$request->user(), 404); - $profile = Profile::whereUsername($username)->whereNull('status')->firstOrFail(); - $status = Status::whereProfileId($profile->id)->findOrFail($id); - $this->scopeCheck($profile, $status); - $page = $request->input('page'); - if($page && $page >= 3 && $request->user()->profile_id != $status->profile_id) { - return response()->json([ - 'data' => [] - ]); - } - $shares = $this->getShares($status); - return response()->json([ - 'data' => $shares - ]); - } - protected function scopeCheck(Profile $profile, Status $status) { if($profile->is_private == true && Auth::check() == false) { diff --git a/routes/web.php b/routes/web.php index df0adc1ff..309380af8 100644 --- a/routes/web.php +++ b/routes/web.php @@ -189,8 +189,6 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact Route::get('profile/{username}/status/{postid}', 'PublicApiController@status'); Route::get('profile/{username}/status/{postid}/state', 'PublicApiController@statusState'); Route::get('comments/{username}/status/{postId}', 'PublicApiController@statusComments'); - Route::get('likes/profile/{username}/status/{id}', 'PublicApiController@statusLikes'); - Route::get('shares/profile/{username}/status/{id}', 'PublicApiController@statusShares'); Route::get('status/{id}/replies', 'InternalApiController@statusReplies'); Route::post('moderator/action', 'InternalApiController@modAction'); Route::get('discover/categories', 'InternalApiController@discoverCategories'); @@ -234,8 +232,6 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact Route::get('discover/profiles', 'DiscoverController@profilesDirectoryApi'); Route::get('profile/{username}/status/{postid}', 'PublicApiController@status'); Route::get('comments/{username}/status/{postId}', 'PublicApiController@statusComments'); - Route::get('likes/profile/{username}/status/{id}', 'PublicApiController@statusLikes'); - Route::get('shares/profile/{username}/status/{id}', 'PublicApiController@statusShares'); Route::post('moderator/action', 'InternalApiController@modAction'); Route::get('discover/categories', 'InternalApiController@discoverCategories'); Route::get('loops', 'DiscoverController@loopsApi'); From 75ea715b02bc4b66179d241a29926bdebe5d2884 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sun, 5 Mar 2023 00:31:51 -0700 Subject: [PATCH 10/17] Update compiled assets --- ...cover~myhashtags.chunk.cdc63d8d61ec1688.js | Bin 161172 -> 0 bytes ...cover~myhashtags.chunk.e5c0ccc2d836cf5d.js | Bin 0 -> 161308 bytes public/js/home.chunk.4608ae7f0b7a9c08.js | Bin 0 -> 193875 bytes public/js/home.chunk.e9544807955a793b.js | Bin 193739 -> 0 bytes public/js/manifest.js | Bin 4282 -> 4282 bytes public/js/post.chunk.08ed66fc33eb3409.js | Bin 0 -> 182642 bytes public/js/post.chunk.3ea384fc9ebf43c7.js | Bin 182506 -> 0 bytes public/js/profile.chunk.03cb7def73251d41.js | Bin 0 -> 207930 bytes public/js/profile.chunk.4e79ac3514929747.js | Bin 207419 -> 0 bytes public/js/profile.js | Bin 124137 -> 123511 bytes ...ofile~followers.bundle.609be992e8222ed8.js | Bin 27134 -> 0 bytes ...ofile~followers.bundle.d77bbd9d04663ceb.js | Bin 0 -> 27325 bytes ...ofile~following.bundle.796b720c16682ef9.js | Bin 27112 -> 0 bytes ...ofile~following.bundle.e568d9317b1e8a18.js | Bin 0 -> 27296 bytes public/js/rempos.js | Bin 150253 -> 0 bytes public/js/rempro.js | Bin 91161 -> 0 bytes public/js/status.js | Bin 140292 -> 139061 bytes public/js/vendor.js | Bin 3304894 -> 3304410 bytes public/mix-manifest.json | Bin 6049 -> 5901 bytes 19 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 public/js/discover~myhashtags.chunk.cdc63d8d61ec1688.js create mode 100644 public/js/discover~myhashtags.chunk.e5c0ccc2d836cf5d.js create mode 100644 public/js/home.chunk.4608ae7f0b7a9c08.js delete mode 100644 public/js/home.chunk.e9544807955a793b.js create mode 100644 public/js/post.chunk.08ed66fc33eb3409.js delete mode 100644 public/js/post.chunk.3ea384fc9ebf43c7.js create mode 100644 public/js/profile.chunk.03cb7def73251d41.js delete mode 100644 public/js/profile.chunk.4e79ac3514929747.js delete mode 100644 public/js/profile~followers.bundle.609be992e8222ed8.js create mode 100644 public/js/profile~followers.bundle.d77bbd9d04663ceb.js delete mode 100644 public/js/profile~following.bundle.796b720c16682ef9.js create mode 100644 public/js/profile~following.bundle.e568d9317b1e8a18.js delete mode 100644 public/js/rempos.js delete mode 100644 public/js/rempro.js diff --git a/public/js/discover~myhashtags.chunk.cdc63d8d61ec1688.js b/public/js/discover~myhashtags.chunk.cdc63d8d61ec1688.js deleted file mode 100644 index 2ebfa1245515b88e0732d5f3afe80c07e5890aa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161172 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 literal 0 HcmV?d00001 diff --git a/public/js/home.chunk.4608ae7f0b7a9c08.js b/public/js/home.chunk.4608ae7f0b7a9c08.js new file mode 100644 index 0000000000000000000000000000000000000000..d9d5029357e3a8f488b258eae72ee3835f219daa GIT binary patch literal 193875 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