fix deletion back
This commit is contained in:
@@ -1,7 +1,5 @@
|
||||
import statusCode from "../utils/statusCodes";
|
||||
import { Response } from "express";
|
||||
import { getMessageUid, getUserOfMailbox } from "../db/utils/mail";
|
||||
import emailManager from "../mails/EmailManager";
|
||||
import logger from "../system/Logger";
|
||||
import Message from "../mails/message/Message";
|
||||
import Room from "../mails/room/Room";
|
||||
@@ -36,76 +34,71 @@ export default class MessageAbl {
|
||||
}
|
||||
|
||||
static async addFlag(body, res: Response) {
|
||||
await MessageAbl.changeFlag(body, res, false);
|
||||
await this.changeFlag(body, res, false);
|
||||
}
|
||||
|
||||
static async removeFlag(body, res: Response) {
|
||||
await MessageAbl.changeFlag(body, res, true);
|
||||
await this.changeFlag(body, res, true);
|
||||
}
|
||||
|
||||
static deleteRemoteOnly = async (body, res: Response) => {
|
||||
const { mailboxId, messageId } = body;
|
||||
const message = new Message().setMessageId(messageId);
|
||||
|
||||
static async deleteRemoteUtil(message: Message, mailboxId: number, res, isFull: boolean): Promise<boolean> {
|
||||
try {
|
||||
await message.useUid();
|
||||
} catch (error) {
|
||||
logger.err(error);
|
||||
res.status(statusCode.NOT_FOUND).send({ error: "Message uid not found." });
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
await message.useMailbox(mailboxId);
|
||||
} catch (error) {
|
||||
res.status(statusCode.NOT_FOUND).send({ error: "Not account for this mailbox." });
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
await message.mailbox.addFlag(message.uid.toString(), ["\\Deleted"]);
|
||||
await message.mailbox.moveToTrash(message.uid.toString(), (err) => {
|
||||
throw err;
|
||||
if (err) {
|
||||
logger.err(err);
|
||||
}
|
||||
// throw err;
|
||||
});
|
||||
} catch (err) {
|
||||
logger.log(err);
|
||||
res.status(statusCode.METHOD_FAILURE).send({ error: err });
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
res.status(statusCode.OK).send();
|
||||
if (isFull) {
|
||||
res.status(statusCode.OK).send();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static deleteRemoteOnly = async (body, res: Response) => {
|
||||
const { mailboxId, messageId } = body;
|
||||
const message = new Message().setMessageId(messageId);
|
||||
await this.deleteRemoteUtil(message, mailboxId, res, true);
|
||||
};
|
||||
|
||||
static deleteEverywhere = async (body, res: Response) => {
|
||||
const { mailboxId, messageId } = body;
|
||||
const message = new Message().setMessageId(messageId);
|
||||
await message.useFlags();
|
||||
|
||||
try {
|
||||
await message.useUid();
|
||||
} catch (error) {
|
||||
logger.err(error);
|
||||
res.status(statusCode.NOT_FOUND).send({ error: "Message uid not found." });
|
||||
await message.useFlags();
|
||||
} catch (err) {
|
||||
res.status(statusCode.METHOD_FAILURE).send({ error: err });
|
||||
logger.err(err);
|
||||
return;
|
||||
}
|
||||
|
||||
// if message not deleted remotly, delete it
|
||||
if (!message.isDeleted) {
|
||||
try {
|
||||
await message.useMailbox(mailboxId);
|
||||
} catch (error) {
|
||||
res.status(statusCode.NOT_FOUND).send({ error: "Not account for this mailbox." });
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
await message.mailbox.addFlag(message.uid.toString(), ["\\Deleted"]);
|
||||
await message.mailbox.moveToTrash(message.uid.toString(), (err) => {
|
||||
throw err;
|
||||
});
|
||||
} catch (err) {
|
||||
logger.log(err);
|
||||
res.status(statusCode.METHOD_FAILURE).send({ error: err });
|
||||
const success = await this.deleteRemoteUtil(message, mailboxId, res, false);
|
||||
if (!success) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user