register flags
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { getAddresseId } from "../../db/utils/mail";
|
||||
import {simpleParser} from "mailparser";
|
||||
import { getAddresseId, getFlagId } from "../../db/utils/mail";
|
||||
import { EmailAddress, ParsedMail, simpleParser } from "mailparser";
|
||||
import moment from "moment";
|
||||
import Imap from "imap";
|
||||
import {
|
||||
@@ -10,6 +10,7 @@ import {
|
||||
registerBodypart,
|
||||
saveBodypart,
|
||||
saveSource,
|
||||
registerFlag,
|
||||
} from "../../db/message/storeMessage-db";
|
||||
|
||||
import { getFieldId } from "../../db/utils/mail";
|
||||
@@ -25,11 +26,13 @@ export function saveMessage(attrs: AttrsWithEnvelope, mailboxId: number, imap: I
|
||||
return new Promise((resolve, reject) => {
|
||||
registerMessage(ts, rfc822size, messageID)
|
||||
.then((messageId) => {
|
||||
|
||||
const isSeen: boolean = attrs.flags.includes("\\Seen");
|
||||
const deleted: boolean = attrs.flags.includes("\\Deleted");
|
||||
|
||||
registerMailbox_message(mailboxId, attrs.uid, messageId, attrs?.modseq || 0, isSeen, deleted);
|
||||
registerFlags(messageId, attrs.flags);
|
||||
|
||||
// fetch message to save everything
|
||||
const f = imap.fetch(attrs.uid, { bodies: "" });
|
||||
let buffer = "";
|
||||
|
||||
@@ -70,14 +73,24 @@ export function saveMessage(attrs: AttrsWithEnvelope, mailboxId: number, imap: I
|
||||
});
|
||||
}
|
||||
|
||||
async function saveFromParsedData(parsed, messageId) {
|
||||
function registerFlags(messageId: number, flags: string[]) {
|
||||
flags.forEach((flag) => {
|
||||
getFlagId(flag).then((flagId) => {
|
||||
registerFlag(messageId, flagId);
|
||||
}).catch((err: Error) => {
|
||||
logger.err(err);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async function saveFromParsedData(parsed: ParsedMail, messageId: number) {
|
||||
const promises: Promise<any>[] = [];
|
||||
Object.keys(parsed).forEach((key) => {
|
||||
if (["from", "to", "cc", "bcc", "replyTo"].includes(key)) {
|
||||
promises.push(
|
||||
// save address field
|
||||
getFieldId(key).then((fieldId) => {
|
||||
parsed[key].value.forEach((addr, nb) => {
|
||||
parsed[key].value.forEach((addr: EmailAddress, nb: number) => {
|
||||
getAddresseId(addr.address, addr.name).then(async (addressId) => {
|
||||
await saveAddress_fields(messageId, fieldId, addressId, nb);
|
||||
});
|
||||
@@ -121,7 +134,6 @@ async function saveFromParsedData(parsed, messageId) {
|
||||
// todo when transfered
|
||||
}
|
||||
|
||||
|
||||
if (process.env["NODE_DEV"] == "TEST") {
|
||||
module.exports = {
|
||||
saveFromParsedData,
|
||||
|
||||
Reference in New Issue
Block a user