mirror of
https://github.com/EvolutionAPI/evolution-api.git
synced 2025-07-18 13:06:32 -06:00
Merge branch 'develop' of github.com:EvolutionAPI/evolution-api into develop
This commit is contained in:
commit
3d743f8498
@ -508,6 +508,7 @@ export const archiveChatSchema: JSONSchema7 = {
|
|||||||
$id: v4(),
|
$id: v4(),
|
||||||
type: 'object',
|
type: 'object',
|
||||||
properties: {
|
properties: {
|
||||||
|
chat: { type: 'string' },
|
||||||
lastMessage: {
|
lastMessage: {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
properties: {
|
properties: {
|
||||||
@ -528,7 +529,7 @@ export const archiveChatSchema: JSONSchema7 = {
|
|||||||
},
|
},
|
||||||
archive: { type: 'boolean', enum: [true, false] },
|
archive: { type: 'boolean', enum: [true, false] },
|
||||||
},
|
},
|
||||||
required: ['lastMessage', 'archive'],
|
required: ['archive'],
|
||||||
};
|
};
|
||||||
|
|
||||||
export const deleteMessageSchema: JSONSchema7 = {
|
export const deleteMessageSchema: JSONSchema7 = {
|
||||||
|
@ -53,13 +53,14 @@ export class ReadMessageDto {
|
|||||||
read_messages: Key[];
|
read_messages: Key[];
|
||||||
}
|
}
|
||||||
|
|
||||||
class LastMessage {
|
export class LastMessage {
|
||||||
key: Key;
|
key: Key;
|
||||||
messageTimestamp?: number;
|
messageTimestamp?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class ArchiveChatDto {
|
export class ArchiveChatDto {
|
||||||
lastMessage: LastMessage;
|
lastMessage?: LastMessage;
|
||||||
|
chat?: string;
|
||||||
archive: boolean;
|
archive: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,6 +72,7 @@ import {
|
|||||||
ArchiveChatDto,
|
ArchiveChatDto,
|
||||||
DeleteMessage,
|
DeleteMessage,
|
||||||
getBase64FromMediaMessageDto,
|
getBase64FromMediaMessageDto,
|
||||||
|
LastMessage,
|
||||||
NumberBusiness,
|
NumberBusiness,
|
||||||
OnWhatsAppDto,
|
OnWhatsAppDto,
|
||||||
PrivacySettingDto,
|
PrivacySettingDto,
|
||||||
@ -2330,20 +2331,56 @@ export class WAStartupService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 >= lastMessage.messageTimestamp) {
|
||||||
|
lastMessage = message;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return lastMessage as unknown as LastMessage;
|
||||||
|
}
|
||||||
|
|
||||||
public async archiveChat(data: ArchiveChatDto) {
|
public async archiveChat(data: ArchiveChatDto) {
|
||||||
this.logger.verbose('Archiving chat');
|
this.logger.verbose('Archiving chat');
|
||||||
try {
|
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(
|
await this.client.chatModify(
|
||||||
{
|
{
|
||||||
archive: data.archive,
|
archive: data.archive,
|
||||||
lastMessages: [data.lastMessage],
|
lastMessages: [last_message],
|
||||||
},
|
},
|
||||||
data.lastMessage.key.remoteJid,
|
this.createJid(number),
|
||||||
);
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
chatId: data.lastMessage.key.remoteJid,
|
chatId: number,
|
||||||
archived: true,
|
archived: true,
|
||||||
};
|
};
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
Loading…
Reference in New Issue
Block a user