From 63d11d3f840a1bc2fcc9d1973399f6e31ed9fa14 Mon Sep 17 00:00:00 2001 From: Aliyss Snow <33941859+Aliyss@users.noreply.github.com> Date: Tue, 1 Jun 2021 02:58:55 +0200 Subject: [PATCH] feat: disable / enable WA Web features (#543) * Added Features and Enabling/Disabling of Features within WhatsappWeb * remove feature commands from example Co-authored-by: Pedro S. Lopez Co-authored-by: Pedro Lopez --- example.js | 2 +- src/util/Injected.js | 2 +- src/util/InterfaceController.js | 44 ++++++++++++++++++++++++++++++++- 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/example.js b/example.js index 2da702e..803bcb9 100644 --- a/example.js +++ b/example.js @@ -192,7 +192,7 @@ client.on('message', async msg => { const chat = await msg.getChat(); // stops typing or recording in the chat chat.clearState(); - } else if (msg.body === 'jumpto') { + } else if (msg.body === '!jumpto') { if (msg.hasQuotedMsg) { const quotedMsg = await msg.getQuotedMessage(); client.interface.openChatWindowAt(quotedMsg.id._serialized); diff --git a/src/util/Injected.js b/src/util/Injected.js index 61e5554..255232b 100644 --- a/src/util/Injected.js +++ b/src/util/Injected.js @@ -32,9 +32,9 @@ exports.ExposeStore = (moduleRaidStr) => { window.Store.Sticker = window.mR.findModule('Sticker')[0].default.Sticker; window.Store.UploadUtils = window.mR.findModule((module) => (module.default && module.default.encryptAndUpload) ? module.default : null)[0].default; window.Store.Label = window.mR.findModule('LabelCollection')[0].default; + window.Store.Features = window.mR.findModule('FEATURE_CHANGE_EVENT')[0].default; window.Store.QueryOrder = window.mR.findModule('queryOrder')[0]; window.Store.QueryProduct = window.mR.findModule('queryProduct')[0]; - }; exports.LoadUtils = () => { diff --git a/src/util/InterfaceController.js b/src/util/InterfaceController.js index 3c0200c..3309daa 100644 --- a/src/util/InterfaceController.js +++ b/src/util/InterfaceController.js @@ -73,7 +73,49 @@ class InterfaceController { await window.Store.Cmd.closeDrawerRight(); }); } - + + /** + * Get all Features + */ + async getFeatures() { + return await this.pupPage.evaluate(() => { + return window.Store.Features.F; + }); + } + + /** + * Check if Feature is enabled + * @param {string} feature status to check + */ + async checkFeatureStatus(feature) { + return await this.pupPage.evaluate((feature) => { + return window.Store.Features.supportsFeature(feature); + }, feature); + } + + /** + * Enable Features + * @param {string[]} features to be enabled + */ + async enableFeatures(features) { + await this.pupPage.evaluate((features) => { + for (const feature in features) { + window.Store.Features.setFeature(features[feature], true); + } + }, features); + } + + /** + * Disable Features + * @param {string[]} features to be disabled + */ + async disableFeatures(features) { + await this.pupPage.evaluate((features) => { + for (const feature in features) { + window.Store.Features.setFeature(features[feature], false); + } + }, features); + } } module.exports = InterfaceController;