fix: correctly set latest message in chat + lastMsgRecvTimestamp

This commit is contained in:
Adhiraj Singh
2022-09-11 11:06:38 +05:30
parent f11c8c401f
commit c20865dff1
2 changed files with 19 additions and 4 deletions

View File

@@ -74,7 +74,12 @@ export type ChatModification =
| { delete: true, lastMessages: LastMessageList }
export type InitialReceivedChatsState = {
[jid: string]: { lastMsgRecvTimestamp: number }
[jid: string]: {
/** the last message received from the other party */
lastMsgRecvTimestamp?: number
/** the absolute last message in the chat */
lastMsgTimestamp: number
}
}
export type InitialAppStateSyncOptions = {

View File

@@ -45,20 +45,30 @@ export const processHistoryMessage = (
}
const msgs = chat.messages || []
delete chat.messages
for(const item of msgs) {
const message = item.message!
const uqId = `${message.key.remoteJid}:${message.key.id}`
if(!historyCache.has(uqId)) {
messages.push(message)
const curItem = recvChats[message.key.remoteJid!]
let curItem = recvChats[message.key.remoteJid!]
const timestamp = toNumber(message.messageTimestamp)
if(!curItem || timestamp > curItem.lastMsgRecvTimestamp) {
recvChats[chat.id] = { lastMsgRecvTimestamp: timestamp }
if(!curItem || timestamp > curItem.lastMsgTimestamp) {
curItem = { lastMsgTimestamp: timestamp }
recvChats[chat.id] = curItem
// keep only the most recent message in the chat array
chat.messages = [{ message }]
}
if(
!message.key.fromMe
&& (!curItem?.lastMsgRecvTimestamp || timestamp > curItem.lastMsgRecvTimestamp)
) {
curItem.lastMsgRecvTimestamp = timestamp
}
historyCache.add(uqId)
}
}