mirror of
https://github.com/EvolutionAPI/evolution-api.git
synced 2025-07-23 04:22:02 -06:00
Adição de Get Last Message e Archive por Chat
This commit is contained in:
parent
d344e513c4
commit
52533d4b38
@ -508,6 +508,7 @@ export const archiveChatSchema: JSONSchema7 = {
|
||||
$id: v4(),
|
||||
type: 'object',
|
||||
properties: {
|
||||
chat: { type: 'string' },
|
||||
lastMessage: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
@ -528,7 +529,7 @@ export const archiveChatSchema: JSONSchema7 = {
|
||||
},
|
||||
archive: { type: 'boolean', enum: [true, false] },
|
||||
},
|
||||
required: ['lastMessage', 'archive'],
|
||||
required: ['archive'],
|
||||
};
|
||||
|
||||
export const deleteMessageSchema: JSONSchema7 = {
|
||||
|
@ -53,13 +53,14 @@ export class ReadMessageDto {
|
||||
read_messages: Key[];
|
||||
}
|
||||
|
||||
class LastMessage {
|
||||
export class LastMessage {
|
||||
key: Key;
|
||||
messageTimestamp?: number;
|
||||
}
|
||||
|
||||
export class ArchiveChatDto {
|
||||
lastMessage: LastMessage;
|
||||
lastMessage?: LastMessage;
|
||||
chat?: string;
|
||||
archive: boolean;
|
||||
}
|
||||
|
||||
|
@ -74,6 +74,7 @@ import {
|
||||
getBase64FromMediaMessageDto,
|
||||
NumberBusiness,
|
||||
OnWhatsAppDto,
|
||||
LastMessage,
|
||||
PrivacySettingDto,
|
||||
ReadMessageDto,
|
||||
WhatsAppNumberDto,
|
||||
@ -2345,23 +2346,62 @@ export class WAStartupService {
|
||||
throw new InternalServerErrorException('Read messages fail', error.toString());
|
||||
}
|
||||
}
|
||||
|
||||
public async getLastMessage(number: string) {
|
||||
const messages = await this.fetchMessages({
|
||||
where: {
|
||||
key: {
|
||||
remoteJid: number
|
||||
},
|
||||
owner: this.instance.name
|
||||
}
|
||||
});
|
||||
|
||||
let lastMessage = messages.pop();
|
||||
|
||||
for (const message of messages) {
|
||||
if (
|
||||
message.messageTimestamp?.low >= lastMessage.messageTimestamp?.low
|
||||
|| message.messageTimestamp >= lastMessage.messageTimestamp
|
||||
) {
|
||||
lastMessage = message;
|
||||
}
|
||||
}
|
||||
|
||||
return lastMessage as unknown as LastMessage;
|
||||
}
|
||||
|
||||
public async archiveChat(data: ArchiveChatDto) {
|
||||
this.logger.verbose('Archiving chat');
|
||||
try {
|
||||
data.lastMessage.messageTimestamp = data.lastMessage?.messageTimestamp ?? Date.now();
|
||||
let last_message = data.lastMessage;
|
||||
let number = data.chat;
|
||||
|
||||
if(!last_message && number) {
|
||||
last_message = await this.getLastMessage(number);
|
||||
} else {
|
||||
last_message = data.lastMessage;
|
||||
last_message.messageTimestamp = last_message?.messageTimestamp ?? Date.now();
|
||||
number = last_message?.key?.remoteJid;
|
||||
}
|
||||
|
||||
if (!last_message || Object.keys(last_message).length === 0) {
|
||||
throw new NotFoundException("Last message not found");
|
||||
}
|
||||
console.log(last_message);
|
||||
|
||||
await this.client.chatModify(
|
||||
{
|
||||
archive: data.archive,
|
||||
lastMessages: [data.lastMessage],
|
||||
},
|
||||
data.lastMessage.key.remoteJid,
|
||||
);
|
||||
|
||||
return {
|
||||
chatId: data.lastMessage.key.remoteJid,
|
||||
archived: true,
|
||||
};
|
||||
archive: data.archive,
|
||||
lastMessages: [last_message]
|
||||
},
|
||||
this.createJid(number)
|
||||
);
|
||||
|
||||
return {
|
||||
chatId: number,
|
||||
archived: true,
|
||||
};
|
||||
} catch (error) {
|
||||
throw new InternalServerErrorException({
|
||||
archived: false,
|
||||
|
Loading…
Reference in New Issue
Block a user