mirror of
https://github.com/cheveguerra/whatsapp-web.js.git
synced 2026-04-21 04:59:14 +00:00
merge (#1635)
* 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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
69
src/structures/Reaction.js
Normal file
69
src/structures/Reaction.js
Normal 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;
|
||||
@@ -18,4 +18,5 @@ module.exports = {
|
||||
Buttons: require('./Buttons'),
|
||||
List: require('./List'),
|
||||
Payment: require('./Payment'),
|
||||
Reaction: require('./Reaction'),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user