Add option to look for deleted keys in shallowChanges

This commit is contained in:
Adhiraj Singh
2020-12-12 14:15:05 +05:30
parent b72e2dfcf9
commit 282fdb1bd3
2 changed files with 8 additions and 6 deletions

View File

@@ -47,7 +47,7 @@ export class WAConnection extends Base {
} else {
chat.messages = oldChat.messages
if (oldChat.t !== chat.t || oldChat.modify_tag !== chat.modify_tag) {
const changes = shallowChanges (oldChat, chat)
const changes = shallowChanges (oldChat, chat, { lookForDeletedKeys: true })
delete chat.metadata // remove group metadata as that may have changed; TODO, write better mechanism for this
delete changes.messages
@@ -150,7 +150,7 @@ export class WAConnection extends Base {
contact.jid = whatsappID (contact.jid)
const presentContact = contacts[contact.jid]
if (presentContact) {
const changes = shallowChanges(presentContact, contact)
const changes = shallowChanges(presentContact, contact, { lookForDeletedKeys: false })
if (changes && Object.keys(changes).length > 0) {
updatedContacts.push({ ...changes, jid: contact.jid })
}

View File

@@ -45,16 +45,18 @@ export const newMessagesDB = (messages: WAMessage[] = []) => {
return db
}
export function shallowChanges <T> (old: T, current: T): Partial<T> {
export function shallowChanges <T> (old: T, current: T, {lookForDeletedKeys}: {lookForDeletedKeys: boolean}): Partial<T> {
let changes: Partial<T> = {}
for (let key in current) {
if (old[key] !== current[key]) {
changes[key] = current[key] || null
}
}
for (let key in old) {
if (!changes[key] && old[key] !== current[key]) {
changes[key] = current[key] || null
if (lookForDeletedKeys) {
for (let key in old) {
if (!changes[key] && old[key] !== current[key]) {
changes[key] = current[key] || null
}
}
}
return changes