✨ feat(im): 优化 im 前端的枚举类
parent
6664afb851
commit
5f16cd74e0
|
|
@ -0,0 +1,72 @@
|
|||
/** IM 消息类型枚举(对齐后端 ImMessageTypeEnum) */
|
||||
export const ImMessageType = {
|
||||
TEXT: 0, // 文本
|
||||
IMAGE: 1, // 图片
|
||||
FILE: 2, // 文件
|
||||
VOICE: 3, // 语音
|
||||
VIDEO: 4, // 视频
|
||||
RECALL: 10, // 撤回
|
||||
READ: 11, // 已读
|
||||
RECEIPT: 12, // 回执
|
||||
TIP_TIME: 20, // 时间分隔线(前端本地生成,不发送到后端)
|
||||
TIP_TEXT: 21, // 提示文本(撤回提示等)
|
||||
FRIEND_ADD: 100, // 好友添加
|
||||
FRIEND_DELETE: 101, // 好友删除
|
||||
FRIEND_UPDATE: 102, // 好友更新(客户端收到后自行拉取)
|
||||
GROUP_CREATE: 200, // 群创建
|
||||
GROUP_UPDATE: 201, // 群信息变更
|
||||
GROUP_DELETE: 202, // 群删除(解散 / 退群 / 踢出均用此类型)
|
||||
GROUP_MEMBER_UPDATE: 203 // 群成员信息变更(客户端收到后自行拉取)
|
||||
} as const
|
||||
|
||||
/** IM 普通消息类型集合(聊天气泡中显示,并作为会话最后一条摘要) */
|
||||
const ImMessageTypeNormals: number[] = [
|
||||
ImMessageType.TEXT,
|
||||
ImMessageType.IMAGE,
|
||||
ImMessageType.FILE,
|
||||
ImMessageType.VOICE,
|
||||
ImMessageType.VIDEO
|
||||
]
|
||||
|
||||
/** 判断是否"普通消息" */
|
||||
export function isNormalMessage(type: number): boolean {
|
||||
return ImMessageTypeNormals.includes(type)
|
||||
}
|
||||
|
||||
/**
|
||||
* IM 消息状态枚举(对齐后端 ImMessageStatusEnum,前端扩展 SENDING + FAILED)
|
||||
*
|
||||
* 生命周期:FAILED(-2) → SENDING(-1) → UNREAD(0) → READ(3) / RECALL(2)
|
||||
*/
|
||||
export const ImMessageStatus = {
|
||||
FAILED: -2, // 发送失败(前端独有)
|
||||
SENDING: -1, // 发送中(前端独有)
|
||||
UNREAD: 0, // 未读
|
||||
RECALL: 2, // 已撤回
|
||||
READ: 3 // 已读
|
||||
} as const
|
||||
|
||||
/** IM 会话类型枚举 */
|
||||
export const ImChatType = {
|
||||
PRIVATE: 1, // 私聊
|
||||
GROUP: 2 // 群聊
|
||||
} as const
|
||||
|
||||
/** IM WebSocket 外层事件类型(对齐后端 ImPrivateMessageDTO.TYPE / ImGroupMessageDTO.TYPE) */
|
||||
export const ImWsEventType = {
|
||||
PRIVATE_MESSAGE: 'im-private-message', // 私聊通道
|
||||
GROUP_MESSAGE: 'im-group-message' // 群聊通道
|
||||
} as const
|
||||
|
||||
/** IM 群回执状态枚举(对齐后端 ImGroupMessageReceiptStatusEnum) */
|
||||
export const ImGroupReceiptStatus = {
|
||||
NO_RECEIPT: 0, // 不需要回执
|
||||
PENDING: 1, // 待完成
|
||||
DONE: 2 // 已完成
|
||||
} as const
|
||||
|
||||
/** 每次拉取私聊消息的最大条数(后端上限 1000,前端取保守值 100) */
|
||||
export const PRIVATE_MESSAGE_PULL_SIZE = 100
|
||||
|
||||
/** 每次拉取群聊消息的最大条数(后端上限 1000,前端取保守值 100) */
|
||||
export const GROUP_MESSAGE_PULL_SIZE = 100
|
||||
Loading…
Reference in New Issue