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); }); // todo update seen counter rooms 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); } } }