wppconnect-api / src /api /layers /ui.layer.ts
AUXteam's picture
Upload folder using huggingface_hub
4c34106 verified
/*
* This file is part of WPPConnect.
*
* WPPConnect is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* WPPConnect is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with WPPConnect. If not, see <https://www.gnu.org/licenses/>.
*/
import { AutoDownloadSettings, Theme } from '@wppconnect/wa-js/dist/conn';
import { Page } from 'puppeteer';
import { CreateConfig } from '../../config/create-config';
import { evaluateAndReturn } from '../helpers';
import { Wid } from '../model';
import { GroupLayer } from './group.layer';
export class UILayer extends GroupLayer {
constructor(public page: Page, session?: string, options?: CreateConfig) {
super(page, session, options);
}
/**
* Opens given chat at last message (bottom)
* Will fire natural workflow events of whatsapp web
* @category UI
* @param chatId
*/
public async openChat(chatId: string | Wid) {
return evaluateAndReturn(
this.page,
(chatId: string) => WPP.chat.openChatBottom(chatId, undefined),
chatId
);
}
/**
* Opens chat at given message position
* @category UI
* @param chatId Chat id
* @param messageId Message id (For example: '06D3AB3D0EEB9D077A3F9A3EFF4DD030')
*/
public async openChatAt(chatId: string | Wid, messageId: string) {
return evaluateAndReturn(
this.page,
(chatId: string, messageId) =>
WPP.chat.openChatAt(chatId, messageId, undefined),
chatId,
messageId
);
}
/**
* Closes the currently opened chat (if any).
* The boolean result reflects if there was any chat that got closed.
* @category UI
*/
public async closeChat() {
return evaluateAndReturn(this.page, () => WPP.chat.closeChat());
}
/**
* Return the currently active chat (visually open)
* @category UI
*/
public getActiveChat() {
return evaluateAndReturn(this.page, () => WPP.chat.getActiveChat());
}
/**
* Get current theme
* @category UI
* @returns Current theme ('dark' or 'light')
*/
public async getTheme() {
return await evaluateAndReturn(this.page, () => WPP.conn.getTheme());
}
/**
* Set theme
* Note: This will force a reload of WhatsApp Web to take effect
* @category UI
* @param theme Theme to set ('dark' or 'light')
* @returns void
*/
public async setTheme(theme: Theme) {
return await evaluateAndReturn(
this.page,
(theme) => WPP.conn.setTheme(theme),
theme
);
}
/**
* Get auto download settings
* @category UI
* @returns Auto download settings
*/
public async getAutoDownloadSettings() {
return await evaluateAndReturn(this.page, () =>
WPP.conn.getAutoDownloadSettings()
);
}
/**
* Set auto download settings
* Note: This will force a reload of WhatsApp Web to take effect
* @category UI
* @param settings Auto download settings to set
* @returns void
*/
public async setAutoDownloadSettings(settings: AutoDownloadSettings) {
return await evaluateAndReturn(
this.page,
(settings) => WPP.conn.setAutoDownloadSettings(settings),
settings
);
}
}