@juzi/wechaty-puppet-whatsapp
Version:
Wechaty Puppet for WhatsApp
84 lines • 3.61 kB
JavaScript
/* 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