diff --git a/shared/redux/slices/chat.ts b/shared/redux/slices/chat.ts index 488eb3ab..613fe4f4 100644 --- a/shared/redux/slices/chat.ts +++ b/shared/redux/slices/chat.ts @@ -15,7 +15,7 @@ interface ChatState { currentConverseId: string | null; // 当前活跃的会话id converses: Record; // <会话Id, 会话信息> ack: Record; // <会话Id, 本地最后一条会话Id> - lastMessageMap: Record; // <会话Id, 远程最后一条会话Id> + lastMessageMap: Record; // <会话Id, 远程会话列表最后一条会话Id> } const initialState: ChatState = { diff --git a/web/src/components/ChatBox/useMessageAck.ts b/web/src/components/ChatBox/useMessageAck.ts index 7789ebde..c47575a4 100644 --- a/web/src/components/ChatBox/useMessageAck.ts +++ b/web/src/components/ChatBox/useMessageAck.ts @@ -4,6 +4,7 @@ import { isValidStr, updateAck, useAppDispatch, + useAppSelector, useUpdateRef, } from 'tailchat-shared'; import { chatActions } from 'tailchat-shared/redux/slices'; @@ -12,7 +13,11 @@ import _debounce from 'lodash/debounce'; export function useMessageAck(converseId: string, messages: ChatMessage[]) { const messagesRef = useUpdateRef(messages); const dispatch = useAppDispatch(); + const lastMessageIdRef = useRef(''); + lastMessageIdRef.current = useAppSelector( + (state) => state.chat.ack[converseId] ?? '' + ); const setConverseAck = useMemo( () =>