feat: get pinned messages (#3004)
* feat: add getPinnedMessage method * docs: add docs for the method * chore: fix eslint * refactor: change logic of getting pinned messages * refactor: combine all PinnedMsgUtils * chore: remove comments and mark as ready for review * style: fix typo Co-authored-by: crazynds <36674096+crazynds@users.noreply.github.com> --------- Co-authored-by: crazynds <36674096+crazynds@users.noreply.github.com>
This commit is contained in:
parent
44418e66c2
commit
18b1d32825
4 changed files with 38 additions and 1 deletions
7
index.d.ts
vendored
7
index.d.ts
vendored
|
|
@ -99,6 +99,9 @@ declare namespace WAWebJS {
|
||||||
/** Get message by ID */
|
/** Get message by ID */
|
||||||
getMessageById(messageId: string): Promise<Message>
|
getMessageById(messageId: string): Promise<Message>
|
||||||
|
|
||||||
|
/** Gets instances of all pinned messages in a chat */
|
||||||
|
getPinnedMessages(chatId: string): Promise<[Message]|[]>
|
||||||
|
|
||||||
/** Get all current contact instances */
|
/** Get all current contact instances */
|
||||||
getContacts(): Promise<Contact[]>
|
getContacts(): Promise<Contact[]>
|
||||||
|
|
||||||
|
|
@ -370,7 +373,7 @@ declare namespace WAWebJS {
|
||||||
ack: MessageAck
|
ack: MessageAck
|
||||||
) => void): this
|
) => void): this
|
||||||
|
|
||||||
/** Emitted when an ack event occurrs on message type */
|
/** Emitted when an edit event occurrs on message type */
|
||||||
on(event: 'message_edit', listener: (
|
on(event: 'message_edit', listener: (
|
||||||
/** The message that was affected */
|
/** The message that was affected */
|
||||||
message: Message,
|
message: Message,
|
||||||
|
|
@ -1601,6 +1604,8 @@ declare namespace WAWebJS {
|
||||||
getLabels: () => Promise<Label[]>,
|
getLabels: () => Promise<Label[]>,
|
||||||
/** Add or remove labels to this Chat */
|
/** Add or remove labels to this Chat */
|
||||||
changeLabels: (labelIds: Array<string | number>) => Promise<void>
|
changeLabels: (labelIds: Array<string | number>) => Promise<void>
|
||||||
|
/** Gets instances of all pinned messages in a chat */
|
||||||
|
getPinnedMessages: () => Promise<[Message]|[]>
|
||||||
/** Sync history conversation of the Chat */
|
/** Sync history conversation of the Chat */
|
||||||
syncHistory: () => Promise<boolean>
|
syncHistory: () => Promise<boolean>
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1143,6 +1143,29 @@ class Client extends EventEmitter {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets instances of all pinned messages in a chat
|
||||||
|
* @param {string} chatId The chat ID
|
||||||
|
* @returns {Promise<[Message]|[]>}
|
||||||
|
*/
|
||||||
|
async getPinnedMessages(chatId) {
|
||||||
|
const pinnedMsgs = await this.pupPage.evaluate(async (chatId) => {
|
||||||
|
const chatWid = window.Store.WidFactory.createWid(chatId);
|
||||||
|
const chat = window.Store.Chat.get(chatWid) ?? await window.Store.Chat.find(chatWid);
|
||||||
|
if (!chat) return [];
|
||||||
|
|
||||||
|
const msgs = await window.Store.PinnedMsgUtils.getTable().equals(['chatId'], chatWid.toString());
|
||||||
|
|
||||||
|
const pinnedMsgs = msgs.map((msg) => window.Store.Msg.get(msg.parentMsgKey));
|
||||||
|
|
||||||
|
return !pinnedMsgs.length
|
||||||
|
? []
|
||||||
|
: pinnedMsgs.map((msg) => window.WWebJS.getMessageModel(msg));
|
||||||
|
}, chatId);
|
||||||
|
|
||||||
|
return pinnedMsgs.map((msg) => new Message(this, msg));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an object with information about the invite code's group
|
* Returns an object with information about the invite code's group
|
||||||
* @param {string} inviteCode
|
* @param {string} inviteCode
|
||||||
|
|
|
||||||
|
|
@ -279,6 +279,14 @@ class Chat extends Base {
|
||||||
return this.client.addOrRemoveLabels(labelIds, [this.id._serialized]);
|
return this.client.addOrRemoveLabels(labelIds, [this.id._serialized]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets instances of all pinned messages in a chat
|
||||||
|
* @returns {Promise<[Message]|[]>}
|
||||||
|
*/
|
||||||
|
async getPinnedMessages() {
|
||||||
|
return this.client.getPinnedMessages(this.id._serialized);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sync chat history conversation
|
* Sync chat history conversation
|
||||||
* @return {Promise<boolean>} True if operation completed successfully, false otherwise.
|
* @return {Promise<boolean>} True if operation completed successfully, false otherwise.
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,7 @@ exports.ExposeStore = () => {
|
||||||
window.Store.DeviceList = window.require('WAWebApiDeviceList');
|
window.Store.DeviceList = window.require('WAWebApiDeviceList');
|
||||||
window.Store.HistorySync = window.require('WAWebSendNonMessageDataRequest');
|
window.Store.HistorySync = window.require('WAWebSendNonMessageDataRequest');
|
||||||
window.Store.AddonReactionTable = window.require('WAWebAddonReactionTableMode').reactionTableMode;
|
window.Store.AddonReactionTable = window.require('WAWebAddonReactionTableMode').reactionTableMode;
|
||||||
|
window.Store.PinnedMsgUtils = window.require('WAWebPinInChatSchema');
|
||||||
window.Store.ChatGetters = window.require('WAWebChatGetters');
|
window.Store.ChatGetters = window.require('WAWebChatGetters');
|
||||||
window.Store.UploadUtils = window.require('WAWebUploadManager');
|
window.Store.UploadUtils = window.require('WAWebUploadManager');
|
||||||
window.Store.WAWebStreamModel = window.require('WAWebStreamModel');
|
window.Store.WAWebStreamModel = window.require('WAWebStreamModel');
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue