From f1deb89e348eb8f1a39b51e33a0ae33d59529feb Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun, 29 Jun 2025 15:11:25 +0900 Subject: [PATCH] refactor(frontend): improve pagination implementation --- packages/frontend/eslint.config.js | 3 + .../frontend/src/components/MkChannelList.vue | 6 +- packages/frontend/src/components/MkDrive.vue | 46 +-- .../src/components/MkFileListForAdmin.vue | 6 +- .../src/components/MkNoteDetailed.vue | 17 +- .../src/components/MkNoteDraftsDialog.vue | 15 +- .../src/components/MkNotesTimeline.vue | 24 +- .../frontend/src/components/MkPagination.vue | 60 ++-- .../src/components/MkPaginationControl.vue | 35 +- .../components/MkStreamingNotesTimeline.vue | 199 ++++++----- .../MkStreamingNotificationsTimeline.vue | 38 ++- .../frontend/src/components/MkUserList.vue | 6 +- .../components/MkUserSetupDialog.Follow.vue | 17 +- .../src/composables/use-pagination.ts | 316 ----------------- .../frontend/src/pages/about.federation.vue | 14 +- packages/frontend/src/pages/admin-user.vue | 21 +- packages/frontend/src/pages/admin/abuses.vue | 18 +- .../frontend/src/pages/admin/federation.vue | 12 +- packages/frontend/src/pages/admin/files.vue | 15 +- packages/frontend/src/pages/admin/invites.vue | 23 +- packages/frontend/src/pages/admin/modlog.vue | 40 +-- .../frontend/src/pages/admin/roles.role.vue | 12 +- packages/frontend/src/pages/admin/users.vue | 17 +- packages/frontend/src/pages/announcements.vue | 29 +- packages/frontend/src/pages/channel.vue | 21 +- packages/frontend/src/pages/channels.vue | 42 ++- packages/frontend/src/pages/clip.vue | 13 +- .../src/pages/custom-emojis-manager.vue | 43 ++- .../frontend/src/pages/drive.file.notes.vue | 11 +- .../frontend/src/pages/explore.featured.vue | 17 +- packages/frontend/src/pages/explore.users.vue | 110 +++--- packages/frontend/src/pages/favorites.vue | 9 +- .../frontend/src/pages/flash/flash-index.vue | 24 +- .../frontend/src/pages/follow-requests.vue | 34 +- packages/frontend/src/pages/gallery/index.vue | 40 +-- packages/frontend/src/pages/gallery/post.vue | 12 +- packages/frontend/src/pages/instance-info.vue | 19 +- packages/frontend/src/pages/invite.vue | 18 +- .../frontend/src/pages/my-clips/index.vue | 34 +- packages/frontend/src/pages/my-lists/list.vue | 19 +- packages/frontend/src/pages/note.vue | 36 +- packages/frontend/src/pages/notifications.vue | 17 +- packages/frontend/src/pages/page.vue | 12 +- packages/frontend/src/pages/pages.vue | 24 +- packages/frontend/src/pages/reversi/index.vue | 17 +- packages/frontend/src/pages/role.vue | 12 +- packages/frontend/src/pages/search.note.vue | 19 +- packages/frontend/src/pages/search.user.vue | 15 +- packages/frontend/src/pages/settings/apps.vue | 18 +- .../frontend/src/pages/settings/connect.vue | 10 +- .../src/pages/settings/drive-cleaner.vue | 14 +- .../src/pages/settings/mute-block.vue | 24 +- .../frontend/src/pages/settings/security.vue | 10 +- packages/frontend/src/pages/tag.vue | 16 +- packages/frontend/src/pages/user-tag.vue | 12 +- packages/frontend/src/pages/user/clips.vue | 12 +- packages/frontend/src/pages/user/files.vue | 13 +- packages/frontend/src/pages/user/flashs.vue | 12 +- .../frontend/src/pages/user/follow-list.vue | 19 +- packages/frontend/src/pages/user/gallery.vue | 12 +- .../src/pages/user/index.timeline.vue | 20 +- packages/frontend/src/pages/user/lists.vue | 10 +- packages/frontend/src/pages/user/notes.vue | 20 +- packages/frontend/src/pages/user/pages.vue | 12 +- .../frontend/src/pages/user/reactions.vue | 12 +- .../frontend/src/ui/deck/direct-column.vue | 14 +- .../frontend/src/ui/deck/mentions-column.vue | 16 +- packages/frontend/src/utility/paginator.ts | 322 ++++++++++++++++++ 68 files changed, 1067 insertions(+), 1138 deletions(-) delete mode 100644 packages/frontend/src/composables/use-pagination.ts create mode 100644 packages/frontend/src/utility/paginator.ts diff --git a/packages/frontend/eslint.config.js b/packages/frontend/eslint.config.js index 9359bd14ec..cbd36186e3 100644 --- a/packages/frontend/eslint.config.js +++ b/packages/frontend/eslint.config.js @@ -153,6 +153,9 @@ export default [ autofix: true, }], 'vue/attribute-hyphenation': ['error', 'never'], + 'vue/no-mutating-props': ['error', { + shallowOnly: true, + }], }, }, ]; diff --git a/packages/frontend/src/components/MkChannelList.vue b/packages/frontend/src/components/MkChannelList.vue index 0968452ca7..7f82e531ae 100644 --- a/packages/frontend/src/components/MkChannelList.vue +++ b/packages/frontend/src/components/MkChannelList.vue @@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only -->