diff --git a/index.d.ts b/index.d.ts index e96ed43..4faf221 100644 --- a/index.d.ts +++ b/index.d.ts @@ -601,6 +601,8 @@ declare namespace WAWebJS { isUser: boolean, /** Indicates if the number is registered on WhatsApp */ isWAContact: boolean, + /** Indicates if you have blocked this contact */ + isBlocked: boolean, /** @todo verify labels type. didn't have any documentation */ labels?: string[], /** The contact's name, as saved by the current user */ @@ -627,6 +629,11 @@ declare namespace WAWebJS { * Will return null when getting chat for currently logged in user. */ getChat: () => Promise, + + /** Blocks this contact from WhatsApp */ + block: () => Promise, + /** Unlocks this contact from WhatsApp */ + unblock: () => Promise, } export interface ContactId { diff --git a/src/structures/Contact.js b/src/structures/Contact.js index ec577cd..0b58adc 100644 --- a/src/structures/Contact.js +++ b/src/structures/Contact.js @@ -95,6 +95,12 @@ class Contact extends Base { */ this.isMyContact = data.isMyContact; + /** + * Indicates if you have blocked this contact + * @type {boolean} + */ + this.isBlocked = data.isBlocked; + return super._patch(data); } @@ -116,6 +122,36 @@ class Contact extends Base { return await this.client.getChatById(this.id._serialized); } + + /** + * Blocks this contact from WhatsApp + * @returns {Promise} + */ + async block() { + if(this.isGroup) return false; + + await this.client.pupPage.evaluate(async (contactId) => { + const contact = window.Store.Contact.get(contactId); + await window.Store.BlockContact.blockContact(contact); + }, this.id._serialized); + + return true; + } + + /** + * Unblocks this contact from WhatsApp + * @returns {Promise} + */ + async unblock() { + if(this.isGroup) return false; + + await this.client.pupPage.evaluate(async (contactId) => { + const contact = window.Store.Contact.get(contactId); + await window.Store.BlockContact.unblockContact(contact); + }, this.id._serialized); + + return true; + } } diff --git a/src/util/Injected.js b/src/util/Injected.js index 81045be..2b78ece 100644 --- a/src/util/Injected.js +++ b/src/util/Injected.js @@ -27,6 +27,7 @@ exports.ExposeStore = (moduleRaidStr) => { window.Store.UserConstructor = window.mR.findModule((module) => (module.default && module.default.prototype && module.default.prototype.isServer && module.default.prototype.isUser) ? module.default : null)[0].default; window.Store.Validators = window.mR.findModule('findLinks')[0]; window.Store.WidFactory = window.mR.findModule('createWid')[0]; + window.Store.BlockContact = window.mR.findModule('blockContact')[0]; }; exports.LoadUtils = () => { @@ -246,6 +247,7 @@ exports.LoadUtils = () => { res.isGroup = contact.isGroup; res.isWAContact = contact.isWAContact; res.isMyContact = contact.isMyContact; + res.isBlocked = contact.isContactBlocked; res.userid = contact.userid; return res;