♻️ refactor(im): 清理代码中的 TODO 注释并优化逻辑

im
YunaiV 2026-05-03 13:27:31 +08:00
parent 7c129c18c4
commit bf79e07d5c
3 changed files with 19 additions and 20 deletions

View File

@ -64,7 +64,6 @@ defineEmits<{
const avatarSize = computed(() => Math.ceil(props.height * 0.75))
/** 角色标签文案:普通成员不显示,其余取 im_group_member_role 字典 label */
// TODO DONE @AI get
const roleLabel = computed(() => {
if (props.member.role == null || props.member.role === ImGroupMemberRole.NORMAL) {
return ''

View File

@ -1,7 +1,4 @@
<template>
<!--
布局约定DOM 顺序永远是头像在前 / 气泡在后对方消息走默认 row头像顶左自己消息靠外层 flex-row-reverse 翻视觉头像顶右气泡在头像左侧跟微信对齐
-->
<!-- 时间分隔线TIP_TIME=20居中灰色时间 -->
<div
v-if="isTipTime"
@ -41,8 +38,7 @@
:class="{ 'flex-row-reverse': message.selfSend }"
@contextmenu.prevent="handleContextMenu"
>
<!-- 头像DOM 顺序固定为头像在前 / 气泡在后selfSend flex-row-reverse 翻视觉
点头像弹 UserInfoCard UserAvatar 内部承接 -->
<!-- 头像点击弹 UserInfoCard UserAvatar 内部承接 -->
<UserAvatar
:id="message.selfSend ? userStore.getUser?.id : message.senderId"
:name="senderRealNickname"
@ -205,7 +201,7 @@
</el-tag>
</div>
</div>
<!-- 引用块气泡下方与气泡同侧selfSend 时竖线镜像到右侧 -->
<!-- 引用块气泡下方selfSend 时竖线在右侧 -->
<ReplyPreview
v-if="quote"
:quote="quote"
@ -222,6 +218,7 @@
import { computed, onBeforeUnmount, ref } from 'vue'
import Icon from '@/components/Icon/src/Icon.vue'
import { useMessage } from '@/hooks/web/useMessage'
import { ElMessageBox } from 'element-plus'
import {
ImMessageType,
@ -650,8 +647,11 @@ async function handlePin() {
return
}
try {
// TODO @AI TS2554: Expected 1-2 arguments, but got 3
await confirmDialog('将在当前群成员的聊天中置顶', '置顶消息', { confirmButtonText: '置顶' })
await ElMessageBox.confirm('将在当前群成员的聊天中置顶', '置顶消息', {
confirmButtonText: '置顶',
cancelButtonText: '取消',
type: 'warning'
})
await apiPinGroupMessage({ groupId: group.id, messageId: props.message.id })
successMessage('已置顶')
} catch {}

View File

@ -635,7 +635,8 @@ export const useGroupStore = defineStore('imGroupStore', {
/** 群消息置顶:从 payload 直接拿完整消息对象 push 到 pinnedMessages */
applyGroupMessagePinNotification(groupId: number, payload: GroupNotificationPayload) {
if (!payload.message) {
const message = payload.message
if (!message) {
return
}
const group = this.getGroup(groupId)
@ -644,19 +645,18 @@ export const useGroupStore = defineStore('imGroupStore', {
}
// 幂等:已存在同 messageId 不重复 push
const existing = group.pinnedMessages || []
// TODO @AITS18048: payload.message is possibly undefined
if (existing.some((m) => m.id === payload.message.id)) {
if (existing.some((msg) => msg.id === message.id)) {
return
}
// payload.message 字段名跟 Message 一致(仅 sendTime 需要从 ISO 串转毫秒戳selfSend 按当前用户算)
// message 字段名跟 Message 一致(仅 sendTime 需要从 ISO 串转毫秒戳selfSend 按当前用户算)
const newMessage: Message = {
...payload.message,
clientMessageId: payload.message.clientMessageId || '',
sendTime: new Date(payload.message.sendTime).getTime(),
targetId: payload.message.groupId,
selfSend: payload.message.senderId === getCurrentUserId(),
atUserIds: payload.message.atUserIds || [],
receiverUserIds: payload.message.receiverUserIds || []
...message,
clientMessageId: message.clientMessageId || '',
sendTime: new Date(message.sendTime).getTime(),
targetId: message.groupId,
selfSend: message.senderId === getCurrentUserId(),
atUserIds: message.atUserIds || [],
receiverUserIds: message.receiverUserIds || []
}
group.pinnedMessages = [...existing, newMessage]
this.saveGroups()