delete room when empty

This commit is contained in:
grimhilt
2023-05-06 15:58:33 +02:00
parent 1a7828b281
commit 843659b495
6 changed files with 62 additions and 28 deletions

View File

@@ -4,6 +4,7 @@ import { getMessageUid, getUserOfMailbox } from "../db/utils/mail";
import emailManager from "../mails/EmailManager";
import { deleteMessage } from "../db/message/updateMessage-db";
import logger from "../system/Logger";
import { deleteRoom, getRoomNbMessage, getRoomOnMessageId } from "../db/Room-db";
export default class Message {
static async addFlag(body, res: Response) {
@@ -68,7 +69,8 @@ export default class Message {
const mailbox = emailManager.getImap(user).getMailbox(mailboxId);
// add flag for deletion
mailbox.addFlag(uid.toString(), ["\\Deleted"])
mailbox
.addFlag(uid.toString(), ["\\Deleted"])
.then(() => {
// move message to trash
mailbox.moveToTrash(uid.toString(), (err) => {
@@ -84,7 +86,6 @@ export default class Message {
logger.log(err);
res.status(statusCode.METHOD_FAILURE).send({ error: err });
});
};
static async deleteEverywhere(body, res: Response) {
@@ -92,26 +93,37 @@ export default class Message {
const uid = (await getMessageUid(messageId))[0]?.uid;
if (!uid) {
res.status(statusCode.NOT_FOUND).send({ error: "Message uid not found." });
return;
}
const user = (await getUserOfMailbox(mailboxId))[0]?.user;
if (!user) {
res.status(statusCode.NOT_FOUND).send({ error: "Not account for this mailbox." });
return;
}
const roomId = (await getRoomOnMessageId(messageId))[0]?.room_id;
emailManager
.getImap(user)
.getMailbox(mailboxId)
.removeFlag(uid.toString(), ["\\Deleted"])
.then(() => {
deleteMessage(messageId)
.then((result) => {
// todo check if room is empty
res.status(statusCode.OK).send();
})
.catch((err) => {
res.status(statusCode.METHOD_FAILURE).send({ error: err });
console.log(err);
});
.then(async () => {
try {
await deleteMessage(messageId);
if (roomId) {
const nbMessage = (await getRoomNbMessage(roomId))[0].nbMessage;
if (nbMessage > 0) {
res.status(statusCode.OK).send();
} else {
await deleteRoom(roomId);
res.status(statusCode.OK).json({ deleteRoom: true }).send();
}
}
} catch (err) {
res.status(statusCode.METHOD_FAILURE).send({ error: err });
console.log(err);
}
})
.catch((err) => {
console.log(err);

View File

@@ -31,8 +31,6 @@ export default class Room {
res.status(statusCode.OK).send();
} else if (roomType === RoomType.GROUP || roomType === RoomType.THREAD) {
const lastMsgData = (await getLastMsgData(roomId))[0];
console.log(lastMsgData);
const mailBuilder = new MailBuilder();
mailBuilder.inReplySubject(lastMsgData.subject).inReplyTo(lastMsgData.messageID).text(text).html(html);