From 76aef40de75410b64371ebe871d85dfa9c509b8b Mon Sep 17 00:00:00 2001 From: Tim <135014430+nagisa77@users.noreply.github.com> Date: Wed, 24 Sep 2025 00:30:54 +0800 Subject: [PATCH] feat: add base user avatar component --- frontend_nuxt/components/BaseTimeline.vue | 37 ++++- frontend_nuxt/components/BaseUserAvatar.vue | 132 ++++++++++++++++++ frontend_nuxt/components/CommentItem.vue | 13 +- frontend_nuxt/components/HeaderComponent.vue | 10 +- .../components/PostChangeLogItem.vue | 15 +- frontend_nuxt/components/PostLottery.vue | 18 ++- frontend_nuxt/components/PostPoll.vue | 13 +- .../components/SearchPersonDropdown.vue | 19 ++- frontend_nuxt/components/UserList.vue | 8 +- frontend_nuxt/pages/index.vue | 15 +- frontend_nuxt/pages/message-box/[id].vue | 17 ++- frontend_nuxt/pages/message-box/index.vue | 13 +- frontend_nuxt/pages/posts/[id]/index.vue | 17 ++- frontend_nuxt/pages/settings.vue | 16 ++- frontend_nuxt/pages/users/[id].vue | 14 +- 15 files changed, 314 insertions(+), 43 deletions(-) create mode 100644 frontend_nuxt/components/BaseUserAvatar.vue diff --git a/frontend_nuxt/components/BaseTimeline.vue b/frontend_nuxt/components/BaseTimeline.vue index b95d5e422..a691603e3 100644 --- a/frontend_nuxt/components/BaseTimeline.vue +++ b/frontend_nuxt/components/BaseTimeline.vue @@ -3,10 +3,18 @@
- + @@ -66,8 +91,12 @@ export default { .timeline-img { width: 100%; height: 100%; +} + +.timeline-img :deep(.base-user-avatar-img) { + width: 100%; + height: 100%; object-fit: cover; - border-radius: 50%; } .timeline-emoji { diff --git a/frontend_nuxt/components/BaseUserAvatar.vue b/frontend_nuxt/components/BaseUserAvatar.vue new file mode 100644 index 000000000..22e080523 --- /dev/null +++ b/frontend_nuxt/components/BaseUserAvatar.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/frontend_nuxt/components/CommentItem.vue b/frontend_nuxt/components/CommentItem.vue index 584f0a90b..39f044aa9 100644 --- a/frontend_nuxt/components/CommentItem.vue +++ b/frontend_nuxt/components/CommentItem.vue @@ -26,11 +26,12 @@ - {{ comment.parentUserName }} @@ -111,6 +112,7 @@ import BaseTimeline from '~/components/BaseTimeline.vue' import CommentEditor from '~/components/CommentEditor.vue' import DropdownMenu from '~/components/DropdownMenu.vue' import ReactionsGroup from '~/components/ReactionsGroup.vue' +import BaseUserAvatar from '~/components/BaseUserAvatar.vue' const config = useRuntimeConfig() const API_BASE_URL = config.public.apiBaseUrl @@ -259,6 +261,7 @@ const submitReply = async (parentUserName, text, clear) => { text: data.content, parentUserName: parentUserName, parentUserAvatar: props.comment.avatar, + parentUserId: props.comment.userId, reactions: [], reply: (data.replies || []).map((r) => ({ id: r.id, @@ -270,10 +273,12 @@ const submitReply = async (parentUserName, text, clear) => { reply: [], openReplies: false, src: r.author.avatar, + userId: r.author.id, iconClick: () => navigateTo(`/users/${r.author.id}`), })), openReplies: false, src: data.author.avatar, + userId: data.author.id, iconClick: () => navigateTo(`/users/${data.author.id}`), }) clear() diff --git a/frontend_nuxt/components/HeaderComponent.vue b/frontend_nuxt/components/HeaderComponent.vue index 0f1176a9f..8b977c513 100644 --- a/frontend_nuxt/components/HeaderComponent.vue +++ b/frontend_nuxt/components/HeaderComponent.vue @@ -70,7 +70,14 @@ @@ -93,6 +100,7 @@ import { computed, nextTick, ref, watch } from 'vue' import DropdownMenu from '~/components/DropdownMenu.vue' import ToolTip from '~/components/ToolTip.vue' import SearchDropdown from '~/components/SearchDropdown.vue' +import BaseUserAvatar from '~/components/BaseUserAvatar.vue' import { authState, clearToken, loadCurrentUser } from '~/utils/auth' import { useUnreadCount } from '~/composables/useUnreadCount' import { useChannelsUnreadCount } from '~/composables/useChannelsUnreadCount' diff --git a/frontend_nuxt/components/PostChangeLogItem.vue b/frontend_nuxt/components/PostChangeLogItem.vue index 31988452a..b9ead1887 100644 --- a/frontend_nuxt/components/PostChangeLogItem.vue +++ b/frontend_nuxt/components/PostChangeLogItem.vue @@ -1,12 +1,13 @@