diff --git a/src/Client.js b/src/Client.js index 762c5f7..cc06ea6 100644 --- a/src/Client.js +++ b/src/Client.js @@ -6,6 +6,7 @@ const moduleRaid = require('@pedroslopez/moduleraid/moduleraid'); const jsQR = require('jsqr'); const Util = require('./util/Util'); +const InterfaceController = require('./util/InterfaceController'); const { WhatsWebURL, UserAgent, DefaultOptions, Events, WAState } = require('./util/Constants'); const { ExposeStore, LoadUtils } = require('./util/Injected'); const ChatFactory = require('./factories/ChatFactory'); @@ -157,6 +158,9 @@ class Client extends EventEmitter { return window.Store.Conn.serialize(); })); + // Add InterfaceController + this.interface = new InterfaceController(this); + // Register events await page.exposeFunction('onAddMessageEvent', msg => { if (!msg.isNewMsg) return; diff --git a/src/structures/Chat.js b/src/structures/Chat.js index 4217b59..506fbb2 100644 --- a/src/structures/Chat.js +++ b/src/structures/Chat.js @@ -176,7 +176,7 @@ class Chat extends Base { return true; }, this.id._serialized); } - + /** * Stops typing or recording in chat immediately. */ diff --git a/src/util/InterfaceController.js b/src/util/InterfaceController.js new file mode 100644 index 0000000..9fce571 --- /dev/null +++ b/src/util/InterfaceController.js @@ -0,0 +1,56 @@ +'use strict'; + +/** + * Interface Controller + */ +class InterfaceController { + + constructor(props) { + this.pupPage = props.pupPage; + } + + /** + * Opens the Chat Window + * @param {string} chatId ID of the chat window that will be opened + */ + async openChatWindow(chatId) { + await this.pupPage.evaluate(async chatId => { + let chat = await window.Store.Chat.get(chatId); + await window.Store.Cmd.openChatAt(chat); + }, chatId); + } + + /** + * Opens the Chat Drawer + * @param {string} chatId ID of the chat drawer that will be opened + */ + async openChatDrawer(chatId) { + await this.pupPage.evaluate(async chatId => { + let chat = await window.Store.Chat.get(chatId); + await window.Store.Cmd.chatInfoDrawer(chat); + }, chatId); + } + + /** + * Opens the Message Drawer + * @param {string} msgId ID of the message drawer that will be opened + */ + async openMessageDrawer(msgId) { + await this.pupPage.evaluate(async msgId => { + let msg = await window.Store.Msg.get(msgId); + await window.Store.Cmd.msgInfoDrawer(msg); + }, msgId); + } + + /** + * Closes the Right Drawer + */ + async closeRightDrawer() { + await this.pupPage.evaluate(async () => { + await window.Store.Cmd.closeDrawerRight(); + }); + } + +} + +module.exports = InterfaceController; \ No newline at end of file