whatsapp-web.js/docs/util_InterfaceController.js.html
2026-04-24 20:10:36 +00:00

227 lines
No EOL
7.7 KiB
HTML
Generated

<!doctype html>
<html>
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.7 &raquo; Source: util/InterfaceController.js</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
<link href="css/baseline.css" rel="stylesheet">
</head>
<body onload="prettyPrint()">
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
<div id="jsdoc-body-container">
<div id="jsdoc-content">
<div id="jsdoc-content-container">
<div id="jsdoc-banner" role="banner">
</div>
<div id="jsdoc-main" role="main">
<header class="page-header">
<h1>Source: util/InterfaceController.js</h1>
</header>
<article>
<pre class="prettyprint linenums"><code>&#x27;use strict&#x27;;
/**
* Interface Controller
*/
class InterfaceController {
constructor(props) {
this.pupPage &#x3D; props.pupPage;
}
/**
* Opens the Chat Window
* @param {string} chatId ID of the chat window that will be opened
*/
async openChatWindow(chatId) {
return await this.pupPage.evaluate(async (chatId) &#x3D;&gt; {
const chat &#x3D; await window.WWebJS.getChat(chatId, {
getAsModel: false,
});
return await window
.require(&#x27;WAWebCmd&#x27;)
.Cmd.openChatBottom({ chat: 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) &#x3D;&gt; {
let chat &#x3D; await window.WWebJS.getChat(chatId, {
getAsModel: false,
});
await window.require(&#x27;WAWebCmd&#x27;).Cmd.openDrawerMid(chat);
}, chatId);
}
/**
* Opens the Chat Search
* @param {string} chatId ID of the chat search that will be opened
*/
async openChatSearch(chatId) {
await this.pupPage.evaluate(async (chatId) &#x3D;&gt; {
let chat &#x3D; await window.WWebJS.getChat(chatId, {
getAsModel: false,
});
await window.require(&#x27;WAWebCmd&#x27;).Cmd.chatSearch(chat);
}, chatId);
}
/**
* Opens or Scrolls the Chat Window to the position of the message
* @param {string} msgId ID of the message that will be scrolled to
*/
async openChatWindowAt(msgId) {
await this.pupPage.evaluate(async (msgId) &#x3D;&gt; {
const msg &#x3D;
window.require(&#x27;WAWebCollections&#x27;).Msg.get(msgId) ||
(
await window
.require(&#x27;WAWebCollections&#x27;)
.Msg.getMessagesById([msgId])
)?.messages?.[0];
const chat &#x3D;
window.require(&#x27;WAWebCollections&#x27;).Chat.get(msg.id.remote) ??
(await window
.require(&#x27;WAWebCollections&#x27;)
.Chat.find(msg.id.remote));
const searchContext &#x3D; await window
.require(&#x27;WAWebChatMessageSearch&#x27;)
.getSearchContext(chat, msg.id);
await window
.require(&#x27;WAWebCmd&#x27;)
.Cmd.openChatAt({ chat: chat, msgContext: searchContext });
}, msgId);
}
/**
* 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) &#x3D;&gt; {
const msg &#x3D;
window.require(&#x27;WAWebCollections&#x27;).Msg.get(msgId) ||
(
await window
.require(&#x27;WAWebCollections&#x27;)
.Msg.getMessagesById([msgId])
)?.messages?.[0];
await window.require(&#x27;WAWebCmd&#x27;).Cmd.msgInfoDrawer(msg);
}, msgId);
}
/**
* Closes the Right Drawer
*/
async closeRightDrawer() {
await this.pupPage.evaluate(async () &#x3D;&gt; {
await window
.require(&#x27;WAWebDrawerManager&#x27;)
.DrawerManager.closeDrawerRight();
});
}
/**
* Get all Features
*/
async getFeatures() {
return await this.pupPage.evaluate(() &#x3D;&gt; {
if (!window.require(&#x27;WAWebCollections&#x27;).Features)
throw new Error(
&#x27;This version of Whatsapp Web does not support features&#x27;,
);
return window.require(&#x27;WAWebCollections&#x27;).Features.F;
});
}
/**
* Check if Feature is enabled
* @param {string} feature status to check
*/
async checkFeatureStatus(feature) {
return await this.pupPage.evaluate((feature) &#x3D;&gt; {
if (!window.require(&#x27;WAWebCollections&#x27;).Features)
throw new Error(
&#x27;This version of Whatsapp Web does not support features&#x27;,
);
return window
.require(&#x27;WAWebCollections&#x27;)
.Features.supportsFeature(feature);
}, feature);
}
/**
* Enable Features
* @param {string[]} features to be enabled
*/
async enableFeatures(features) {
await this.pupPage.evaluate((features) &#x3D;&gt; {
if (!window.require(&#x27;WAWebCollections&#x27;).Features)
throw new Error(
&#x27;This version of Whatsapp Web does not support features&#x27;,
);
for (const feature in features) {
window
.require(&#x27;WAWebCollections&#x27;)
.Features.setFeature(features[feature], true);
}
}, features);
}
/**
* Disable Features
* @param {string[]} features to be disabled
*/
async disableFeatures(features) {
await this.pupPage.evaluate((features) &#x3D;&gt; {
if (!window.require(&#x27;WAWebCollections&#x27;).Features)
throw new Error(
&#x27;This version of Whatsapp Web does not support features&#x27;,
);
for (const feature in features) {
window
.require(&#x27;WAWebCollections&#x27;)
.Features.setFeature(features[feature], false);
}
}, features);
}
}
module.exports &#x3D; InterfaceController;
</code></pre>
</article>
</div>
</div>
<nav id="jsdoc-toc-nav" role="navigation"></nav>
</div>
</div>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>
<script src="scripts/jquery.min.js"></script>
<script src="scripts/tree.jquery.js"></script>
<script src="scripts/prettify.js"></script>
<script src="scripts/jsdoc-toc.js"></script>
<script src="scripts/linenumber.js"></script>
<script src="scripts/scrollanchor.js"></script>
</body>
</html>