@juzi/wechaty-puppet-whatsapp
Version:
Wechaty Puppet for WhatsApp
54 lines (46 loc) • 2.03 kB
text/typescript
/* eslint-disable no-case-declarations */
import WhatsAppBase from '../whatsapp-base.js'
import * as PUPPET from '@juzi/wechaty-puppet'
import { log } from '../../config.js'
import type { Contact } from '@juzi/whatsapp-web.js'
import { v4 } from 'uuid'
const PRE = 'ContactEventHandler'
export default class ContactEventHandler extends WhatsAppBase {
public async onContactNameChange (contact: Contact, newName: string, oldName: string) {
log.info(PRE, `onContactNameChange(${contact.id._serialized}, ${newName}, ${oldName})`)
const type = contact.isGroup ? PUPPET.types.Dirty.Room : PUPPET.types.Dirty.Contact
await (await this.manager.getCacheManager()).deleteContactOrRoom(contact.id._serialized)
this.emit('dirty', {
payloadType: type,
payloadId: contact.id._serialized,
})
}
public async onContactAdd (contact: Contact) {
log.info(PRE, `onContactAdd(${contact.id._serialized})`)
const friendship: PUPPET.payloads.Friendship = {
contactId: contact.id._serialized,
hello: '',
id: v4(),
timestamp: Date.now(),
type: PUPPET.types.Friendship.Confirm,
}
const cacheManager = await this.manager.getCacheManager()
await cacheManager.setFriendshipRawPayload(friendship.id, friendship)
await cacheManager.deleteContactOrRoom(contact.id._serialized)
this.emit('friendship', { friendshipId: friendship.id })
}
public async onContactRemove (contact: Contact) {
log.info(PRE, `onContactRemove(${contact.id._serialized})`)
// const friendship: PUPPET.payloads.Friendship = {
// contactId: contact.id._serialized,
// hello: '',
// id: v4(),
// timestamp: Date.now(),
// type: PUPPET.types.Friendship.Delete,
// }
// const cacheManager = await this.manager.getCacheManager()
// await cacheManager.setFriendshipRawPayload(friendship.id, friendship)
// await cacheManager.deleteContactOrRoom(contact.id._serialized)
// this.emit('friendship', { friendshipId: friendship.id })
}
}