refactor: remove seqNo from message and conversation models, update related logic

This commit is contained in:
mlogclub
2026-06-24 23:02:52 +08:00
parent 85cfee1967
commit eb4064bfa9
8 changed files with 21 additions and 39 deletions
+8 -11
View File
@@ -22,7 +22,7 @@ import {
parseImMessageCursorId,
} from "@/lib/im-message-merge"
import {
markMessagesReadToSeqNo,
markMessagesReadToMessageId,
patchConversationList,
patchConversationListWithMessage,
type RealtimeConversationPatch,
@@ -377,7 +377,7 @@ export const useAgentConversationsStore = create<AgentConversationsStore>((set,
return {
readingMessageId: 0,
messages: current.messages.map((item) => {
if (item.seqNo > lastMessage.seqNo) {
if (item.id > lastMessage.id) {
return item
}
return item.agentRead ? item : { ...item, agentRead: true }
@@ -388,7 +388,6 @@ export const useAgentConversationsStore = create<AgentConversationsStore>((set,
...item,
agentUnreadCount: 0,
agentLastReadMessageId: lastMessage.id,
agentLastReadSeqNo: lastMessage.seqNo,
}
: item
),
@@ -424,18 +423,18 @@ export const useAgentConversationsStore = create<AgentConversationsStore>((set,
conversationId > 0 &&
state.selectedConversationId === conversationId
) {
if ((patch.agentLastReadSeqNo ?? 0) > 0) {
nextMessages = markMessagesReadToSeqNo(
if ((patch.agentLastReadMessageId ?? 0) > 0) {
nextMessages = markMessagesReadToMessageId(
nextMessages,
patch.agentLastReadSeqNo ?? 0,
patch.agentLastReadMessageId ?? 0,
"agent",
patch.agentLastReadAt
)
}
if ((patch.customerLastReadSeqNo ?? 0) > 0) {
nextMessages = markMessagesReadToSeqNo(
if ((patch.customerLastReadMessageId ?? 0) > 0) {
nextMessages = markMessagesReadToMessageId(
nextMessages,
patch.customerLastReadSeqNo ?? 0,
patch.customerLastReadMessageId ?? 0,
"customer",
patch.customerLastReadAt
)
@@ -501,7 +500,6 @@ export const useAgentConversationsStore = create<AgentConversationsStore>((set,
(current.conversations.find((item) => item.id === selectedConversationId)
?.customerUnreadCount ?? 0) + 1,
agentLastReadMessageId: message.id,
agentLastReadSeqNo: message.seqNo,
}
),
}))
@@ -558,7 +556,6 @@ export const useAgentConversationsStore = create<AgentConversationsStore>((set,
(current.conversations.find((item) => item.id === selectedConversationId)
?.customerUnreadCount ?? 0) + 1,
agentLastReadMessageId: message.id,
agentLastReadSeqNo: message.seqNo,
}
),
}))
+8 -11
View File
@@ -29,7 +29,7 @@ import {
parseImMessageCursorId,
} from "@/lib/im-message-merge"
import {
markMessagesReadToSeqNo,
markMessagesReadToMessageId,
normalizeRealtimeMessage,
patchConversation,
patchConversationWithMessage,
@@ -88,18 +88,18 @@ function markConversationReadMessages(
payload: ImRealtimeEnvelope["data"] | ImRealtimeEnvelope["payload"]
) {
let next = messages
if ((payload?.agentLastReadSeqNo ?? 0) > 0) {
next = markMessagesReadToSeqNo(
if ((payload?.agentLastReadMessageId ?? 0) > 0) {
next = markMessagesReadToMessageId(
next,
payload?.agentLastReadSeqNo ?? 0,
payload?.agentLastReadMessageId ?? 0,
"agent",
payload?.agentLastReadAt
)
}
if ((payload?.customerLastReadSeqNo ?? 0) > 0) {
next = markMessagesReadToSeqNo(
if ((payload?.customerLastReadMessageId ?? 0) > 0) {
next = markMessagesReadToMessageId(
next,
payload?.customerLastReadSeqNo ?? 0,
payload?.customerLastReadMessageId ?? 0,
"customer",
payload?.customerLastReadAt
)
@@ -464,7 +464,7 @@ export const useSupportChatStore = create<SupportChatStore>((set, get) => {
set((current) => ({
readingMessageId: 0,
messages: current.messages.map((item) => {
if ((item.seqNo ?? 0) > (lastMessage.seqNo ?? 0)) {
if (item.id > lastMessage.id) {
return item
}
return item.customerRead ? item : { ...item, customerRead: true }
@@ -474,7 +474,6 @@ export const useSupportChatStore = create<SupportChatStore>((set, get) => {
...current.conversation,
customerUnreadCount: 0,
customerLastReadMessageId: lastMessage.id,
customerLastReadSeqNo: lastMessage.seqNo,
}
: null,
}))
@@ -509,7 +508,6 @@ export const useSupportChatStore = create<SupportChatStore>((set, get) => {
? {
...state.conversation,
customerLastReadMessageId: nextMessage.id,
customerLastReadSeqNo: nextMessage.seqNo,
customerUnreadCount: 0,
lastMessageAt: nextMessage.sentAt,
lastMessageSummary: summarizeIMMessage(nextMessage),
@@ -575,7 +573,6 @@ export const useSupportChatStore = create<SupportChatStore>((set, get) => {
? {
...state.conversation,
customerLastReadMessageId: nextMessage.id,
customerLastReadSeqNo: nextMessage.seqNo,
customerUnreadCount: 0,
lastMessageAt: nextMessage.sentAt,
lastMessageSummary: summarizeIMMessage(nextMessage),