43 lines
1.5 KiB
TypeScript
43 lines
1.5 KiB
TypeScript
import { registerFlag } from "../../db/message/storeMessage-db";
|
|
import { deleteFlag, getFlags, updateMailboxDeleted, updateMailboxSeen } from "../../db/message/updateMessage-db";
|
|
import { getFlagId, getMessageIdOnUid } from "../../db/utils/mail";
|
|
|
|
export default class updateMessage {
|
|
uid: number;
|
|
flags: string[];
|
|
|
|
constructor(_uid: number, _flags: string[]) {
|
|
this.uid = _uid;
|
|
this.flags = _flags;
|
|
}
|
|
|
|
async updateFlags() {
|
|
const messageId = (await getMessageIdOnUid(this.uid))[0].message_id;
|
|
const currentFlags = await getFlags(this.uid);
|
|
|
|
const flagsToAdd = this.flags.filter((flag) => !currentFlags.find((f) => flag == f.flag_name));
|
|
const flagToRm = currentFlags.filter((f) => !this.flags.includes(f.flag_name));
|
|
|
|
flagsToAdd.forEach(async (flag) => {
|
|
const flagId = await getFlagId(flag);
|
|
registerFlag(messageId, flagId);
|
|
});
|
|
|
|
flagToRm.forEach(async (flag) => {
|
|
deleteFlag(messageId, flag.flag_id);
|
|
});
|
|
|
|
if (flagsToAdd.includes("\\Seen")) {
|
|
updateMailboxSeen(messageId, true);
|
|
} else if (flagToRm.find((f) => f.flag_name == "\\Seen")) {
|
|
updateMailboxSeen(messageId, false);
|
|
}
|
|
|
|
if (flagsToAdd.includes("\\Deleted")) {
|
|
updateMailboxDeleted(messageId, true);
|
|
} else if (flagToRm.find((f) => f.flag_name == "\\Deleted")) {
|
|
updateMailboxDeleted(messageId, false);
|
|
}
|
|
}
|
|
}
|