UNPKG

@juzi/wechaty-puppet-whatsapp

Version:
84 lines 3.61 kB
/* eslint-disable no-redeclare */ import * as PUPPET from '@juzi/wechaty-puppet'; import { FileBox, log, } from '../config.js'; import { WA_ERROR_TYPE } from '../exception/error-type.js'; import WAError from '../exception/whatsapp-error.js'; import { isContactId } from '../helper/miscellaneous.js'; import { parserContactRawPayload } from '../helper/pure-function/contact-raw-payload-parser.js'; const PRE = 'MIXIN_CONTACT'; export async function contactAlias(contactId, alias) { log.verbose(PRE, 'contactAlias(%s, %s)', contactId, alias); return PUPPET.throwUnsupportedError(); } export async function contactPhone(contactId, phoneList) { log.verbose(PRE, 'contactPhone(%s, %s)', contactId, phoneList); if (typeof phoneList === 'undefined') { const cacheManager = await this.manager.getCacheManager(); const contact = await cacheManager.getContactOrRoomRawPayload(contactId); if (contact) { return [contact.number]; } else { return []; } } } export async function contactCorporationRemark(contactId, corporationRemark) { log.verbose(PRE, 'contactCorporationRemark(%s, %s)', contactId, corporationRemark); return PUPPET.throwUnsupportedError(); } export async function contactDescription(contactId, description) { log.verbose(PRE, 'contactDescription(%s, %s)', contactId, description); return PUPPET.throwUnsupportedError(); } export async function contactList() { log.verbose(PRE, 'contactList()'); const cacheManager = await this.manager.getCacheManager(); const contactIdList = await cacheManager.getContactIdList(); return contactIdList; } export async function contactAvatar(contactId, file) { log.verbose(PRE, 'contactAvatar(%s)', contactId); if (file) { return PUPPET.throwUnsupportedError(); } let avatar = ''; const con = await this.manager.getContactById(contactId); try { avatar = await con.getProfilePicUrl(); } catch (err) { log.error(PRE, 'contactAvatar(%s) error:%s', contactId, err.message); } if (avatar) { return FileBox.fromUrl(avatar); } } export async function contactRawPayload(id, forceSync = false) { log.verbose(PRE, 'contactRawPayload(%s)', id); if (!isContactId(id)) { throw WAError(WA_ERROR_TYPE.ERR_CONTACT_NOT_FOUND, `please check contact id: ${id.toString()} again.`); } const cacheManager = await this.manager.getCacheManager(); let contact = await cacheManager.getContactOrRoomRawPayload(id); if (!contact || forceSync) { const rawContact = await this.manager.getContactById(id); const avatar = await rawContact.getProfilePicUrl() || ''; contact = Object.assign(rawContact, { avatar }); await cacheManager.setContactOrRoomRawPayload(id, contact); } return contact; } export async function contactRawPayloadParser(contactPayload) { try { const userName = this.manager.getWhatsAppClient().info.pushname; const result = parserContactRawPayload(contactPayload, userName); log.verbose(PRE, 'contactRawPayloadParser whatsAppPayload(%s) result(%s)', JSON.stringify(contactPayload), JSON.stringify(result)); return result; } catch (error) { log.error(PRE, `contactRawPayloadParser(${contactPayload.id._serialized}) failed, error message: ${error.message}`); throw WAError(WA_ERROR_TYPE.ERR_CONTACT_NOT_FOUND, `contactRawPayloadParser(${contactPayload.id._serialized}) failed, error message: ${error.message}`); } } //# sourceMappingURL=contact.js.map