* updating forward documentation. (#1624)

* updating forward documentation.

* Update Message.js

* Update index.d.ts

* Update docs/Message.html

Co-authored-by: Rajeh Taher <rajeh@reforward.dev>

* fix: `star` Error: Evaluation failed: TypeError: msg.chat.sendStarMsgs is not a function (#1598)

Co-authored-by: Rajeh Taher <rajeh@reforward.dev>

* Update User agent (#1470)

I encountered errors because of this (it says that the chrome version needs to be updated)

Co-authored-by: Rajeh Taher <rajeh@reforward.dev>

* feat: [Updated] Loading screen listener with percent and message (#1563)

* last update

* eslint fix

* headless fix

* Update index.d.ts

Co-authored-by: stefanfuchs <stefan1234@gmail.com>

* Update index.d.ts - Add 'LOADING_SCREEN' type to Enum

Co-authored-by: stefanfuchs <stefan1234@gmail.com>
Co-authored-by: Rajeh Taher <rajeh@reforward.dev>

* feat: Adding file size by bytes to MessageMedia (#1273)

* Update index.d.ts

* Update Message.js

* Update Message.js

* Update MessageMedia.js

* Update MessageMedia.js

* Fix: Cannot read properties of undefined (reading 'id') (#1604)

This change fix `react` evaluation:

```
Error: Evaluation failed: TypeError: Cannot read properties of undefined (reading 'id')
    at Object.<anonymous> (https://web.whatsapp.com/bootstrap_main.44dc3fdf06d9bb8b053d.js:2:103021)
    at Generator.next (<anonymous>)
    at t (https://web.whatsapp.com/vendor1~bootstrap_qr.5922e52928d864c0918c.js:2:66483)
    at s (https://web.whatsapp.com/vendor1~bootstrap_qr.5922e52928d864c0918c.js:2:66694)
    at https://web.whatsapp.com/vendor1~bootstrap_qr.5922e52928d864c0918c.js:2:66753
    at Y (https://web.whatsapp.com/bootstrap_qr.f74b98c729dd38392a5f.js:37:128505)
    at new y (https://web.whatsapp.com/bootstrap_qr.f74b98c729dd38392a5f.js:37:121072)
    at Object.<anonymous> (https://web.whatsapp.com/vendor1~bootstrap_qr.5922e52928d864c0918c.js:2:66634)
    at Object.k (https://web.whatsapp.com/bootstrap_main.44dc3fdf06d9bb8b053d.js:2:105511)
    at Object.t.sendReactionToMsg (https://web.whatsapp.com/bootstrap_main.44dc3fdf06d9bb8b053d.js:2:102647)
    at ExecutionContext._evaluateInternal (/app/node_modules/puppeteer/lib/cjs/puppeteer/common/ExecutionContext.js:221:19)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async ExecutionContext.evaluate (/app/node_modules/puppeteer/lib/cjs/puppeteer/common/ExecutionContext.js:110:16)
    at async Message.react (/app/node_modules/whatsapp-web.js/src/structures/Message.js:344:9)
```

Co-authored-by: Rajeh Taher <rajeh@reforward.dev>

* Feat: add message_reaction event (#1619)

* Add 'message_reaction' event

Co-authored-by: Nowbie S <33182389+NowDev@users.noreply.github.com>
Co-authored-by: Ruvian S <12111730+matricce@users.noreply.github.com>
Co-authored-by: Yehuda Eisenberg <32451776+YehudaEi@users.noreply.github.com>
Co-authored-by: tonbotfy <106827778+tonbotfy@users.noreply.github.com>
Co-authored-by: stefanfuchs <stefan1234@gmail.com>
Co-authored-by: Jeremy Andes <73316325+jeremyandes@users.noreply.github.com>
Co-authored-by: Wictor Nogueira <57378387+wictornogueira@users.noreply.github.com>
This commit is contained in:
Rajeh Taher
2022-08-10 13:46:16 +03:00
committed by GitHub
parent e91077a615
commit b1693b49e0
10 changed files with 213 additions and 16 deletions

View File

@@ -342,6 +342,8 @@ class Message extends Base {
*/
async react(reaction){
await this.client.pupPage.evaluate(async (messageId, reaction) => {
if (!messageId) { return undefined; }
const msg = await window.Store.Msg.get(messageId);
await window.Store.sendReactionToMsg(msg, reaction);
}, this.id._serialized, reaction);
@@ -356,7 +358,7 @@ class Message extends Base {
}
/**
* Forwards this message to another chat
* Forwards this message to another chat (that you chatted before, otherwise it will fail)
*
* @param {string|Chat} chat Chat model or chat ID to which the message will be forwarded
* @returns {Promise}
@@ -413,7 +415,8 @@ class Message extends Base {
return {
data,
mimetype: msg.mimetype,
filename: msg.filename
filename: msg.filename,
filesize: msg.size
};
} catch (e) {
if(e.status && e.status === 404) return undefined;
@@ -422,7 +425,7 @@ class Message extends Base {
}, this.id._serialized);
if (!result) return undefined;
return new MessageMedia(result.mimetype, result.data, result.filename);
return new MessageMedia(result.mimetype, result.data, result.filename, result.filesize);
}
/**
@@ -449,7 +452,7 @@ class Message extends Base {
let msg = window.Store.Msg.get(msgId);
if (msg.canStar()) {
return msg.chat.sendStarMsgs([msg], true);
return window.Store.Cmd.sendStarMsgs(msg.chat, [msg], false);
}
}, this.id._serialized);
}
@@ -462,7 +465,7 @@ class Message extends Base {
let msg = window.Store.Msg.get(msgId);
if (msg.canStar()) {
return msg.chat.sendStarMsgs([msg], false);
return window.Store.Cmd.sendUnstarMsgs(msg.chat, [msg], false);
}
}, this.id._serialized);
}

View File

@@ -10,10 +10,11 @@ const { URL } = require('url');
* Media attached to a message
* @param {string} mimetype MIME type of the attachment
* @param {string} data Base64-encoded data of the file
* @param {?string} filename Document file name
* @param {?string} filename Document file name. Value can be null
* @param {?number} filesize Document file size in bytes. Value can be null
*/
class MessageMedia {
constructor(mimetype, data, filename) {
constructor(mimetype, data, filename, filesize) {
/**
* MIME type of the attachment
* @type {string}
@@ -27,10 +28,16 @@ class MessageMedia {
this.data = data;
/**
* Name of the file (for documents)
* Document file name. Value can be null
* @type {?string}
*/
this.filename = filename;
/**
* Document file size in bytes. Value can be null
* @type {?number}
*/
this.filesize = filesize;
}
/**
@@ -68,6 +75,7 @@ class MessageMedia {
const reqOptions = Object.assign({ headers: { accept: 'image/* video/* text/* audio/*' } }, options);
const response = await fetch(url, reqOptions);
const mime = response.headers.get('Content-Type');
const size = response.headers.get('Content-Length');
const contentDisposition = response.headers.get('Content-Disposition');
const name = contentDisposition ? contentDisposition.match(/((?<=filename=")(.*)(?="))/) : null;
@@ -83,7 +91,7 @@ class MessageMedia {
data = btoa(data);
}
return { data, mime, name };
return { data, mime, name, size };
}
const res = options.client
@@ -96,7 +104,7 @@ class MessageMedia {
if (!mimetype)
mimetype = res.mime;
return new MessageMedia(mimetype, res.data, filename);
return new MessageMedia(mimetype, res.data, filename, res.size || null);
}
}

View File

@@ -0,0 +1,69 @@
'use strict';
const Base = require('./Base');
/**
* Represents a Reaction on WhatsApp
* @extends {Base}
*/
class Reaction extends Base {
constructor(client, data) {
super(client);
if (data) this._patch(data);
}
_patch(data) {
/**
* Reaction ID
* @type {object}
*/
this.id = data.msgKey;
/**
* Orphan
* @type {number}
*/
this.orphan = data.orphan;
/**
* Orphan reason
* @type {?string}
*/
this.orphanReason = data.orphanReason;
/**
* Unix timestamp for when the reaction was created
* @type {number}
*/
this.timestamp = data.timestamp;
/**
* Reaction
* @type {string}
*/
this.reaction = data.reactionText;
/**
* Read
* @type {boolean}
*/
this.read = data.read;
/**
* Message ID
* @type {object}
*/
this.msgId = data.parentMsgKey;
/**
* Sender ID
* @type {string}
*/
this.senderId = data.senderUserJid;
/**
* ACK
* @type {?number}
*/
this.ack = data.ack;
return super._patch(data);
}
}
module.exports = Reaction;

View File

@@ -18,4 +18,5 @@ module.exports = {
Buttons: require('./Buttons'),
List: require('./List'),
Payment: require('./Payment'),
Reaction: require('./Reaction'),
};