From 80d5783f22c7621f612c4e0693db10194b4de089 Mon Sep 17 00:00:00 2001 From: Pedro Lopez Date: Sun, 22 Mar 2020 20:38:26 -0400 Subject: [PATCH] feat: new event for when media is uploaded Messages created by the current client don't have attatched media on message_create because it is still being uploaded and sent. This event allows you to detect when the media has been properly sent so it can be downloaded. close #111 --- src/Client.js | 14 ++++++++++++++ src/util/Constants.js | 1 + 2 files changed, 15 insertions(+) diff --git a/src/Client.js b/src/Client.js index ac2c8ac..d35b9fa 100644 --- a/src/Client.js +++ b/src/Client.js @@ -23,6 +23,7 @@ const { ClientInfo, Message, MessageMedia, Location, GroupNotification } = requi * @fires Client#message_create * @fires Client#message_revoke_me * @fires Client#message_revoke_everyone + * @fires Client#media_uploaded * @fires Client#group_join * @fires Client#group_leave * @fires Client#group_update @@ -259,6 +260,18 @@ class Client extends EventEmitter { }); + await page.exposeFunction('onMessageMediaUploadedEvent', (msg) => { + + const message = new Message(this, msg); + + /** + * Emitted when media has been uploaded for a message sent by the client. + * @event Client#media_uploaded + * @param {Message} message The message with media that was uploaded + */ + this.emit(Events.MEDIA_UPLOADED, message); + }); + await page.exposeFunction('onAppStateChangedEvent', (state) => { /** @@ -285,6 +298,7 @@ class Client extends EventEmitter { window.Store.Msg.on('change', (msg) => { window.onChangeMessageEvent(msg); }); window.Store.Msg.on('change:type', (msg) => { window.onChangeMessageTypeEvent(msg); }); window.Store.Msg.on('change:ack', (msg, ack) => { window.onMessageAckEvent(msg, ack); }); + window.Store.Msg.on('change:isUnsentMedia', (msg, unsent) => { if(msg.id.fromMe && !unsent) window.onMessageMediaUploadedEvent(msg); }); window.Store.Msg.on('remove', (msg) => { if(msg.isNewMsg) window.onRemoveMessageEvent(msg); }); window.Store.AppState.on('change:state', (_AppState, state) => { window.onAppStateChangedEvent(state); }); }); diff --git a/src/util/Constants.js b/src/util/Constants.js index 7e89600..a2a6886 100644 --- a/src/util/Constants.js +++ b/src/util/Constants.js @@ -36,6 +36,7 @@ exports.Events = { MESSAGE_REVOKED_EVERYONE: 'message_revoke_everyone', MESSAGE_REVOKED_ME: 'message_revoke_me', MESSAGE_ACK: 'message_ack', + MEDIA_UPLOADED: 'media_uploaded', GROUP_JOIN: 'group_join', GROUP_LEAVE: 'group_leave', GROUP_UPDATE: 'group_update',