feat: date de début de lecture emails dans paramètres import
This commit is contained in:
@@ -19,6 +19,7 @@ interface EmailImportConfig {
|
||||
password: string;
|
||||
host: string;
|
||||
port: number;
|
||||
sinceDate?: number; // Unix timestamp (s) — ne pas lire les emails antérieurs à cette date
|
||||
}
|
||||
|
||||
// Store active intervals for each user
|
||||
@@ -243,8 +244,17 @@ async function checkEmailsForPDFs(config: EmailImportConfig): Promise<void> {
|
||||
return;
|
||||
}
|
||||
|
||||
// Search for unread emails
|
||||
imap.search(["UNSEEN"], (err, results) => {
|
||||
// Build search criteria: unread emails, optionally filtered by date
|
||||
const searchCriteria: any[] = ["UNSEEN"];
|
||||
if (config.sinceDate) {
|
||||
// IMAP SINCE expects a date string like "1-Jan-2026"
|
||||
const since = new Date(config.sinceDate * 1000);
|
||||
const months = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
|
||||
const sinceStr = `${since.getDate()}-${months[since.getMonth()]}-${since.getFullYear()}`;
|
||||
searchCriteria.push(["SINCE", sinceStr]);
|
||||
console.log(`[EmailImport] Filtering emails since ${sinceStr} for user ${config.userId}`);
|
||||
}
|
||||
imap.search(searchCriteria, (err, results) => {
|
||||
if (err) {
|
||||
console.error("[EmailImport] Error searching emails:", err);
|
||||
imap.end();
|
||||
@@ -397,6 +407,7 @@ export async function startEmailImportService(userId: number): Promise<boolean>
|
||||
password: settings.emailImportPassword,
|
||||
host: settings.emailImportHost,
|
||||
port: settings.emailImportPort || 993,
|
||||
sinceDate: settings.emailImportSinceDate ?? undefined,
|
||||
};
|
||||
|
||||
const frequencyMs = (settings.emailImportFrequency || 30) * 60 * 1000; // Convert minutes to milliseconds
|
||||
@@ -468,6 +479,7 @@ export async function triggerEmailCheck(userId: number): Promise<{ success: bool
|
||||
password: settings.emailImportPassword,
|
||||
host: settings.emailImportHost,
|
||||
port: settings.emailImportPort || 993,
|
||||
sinceDate: settings.emailImportSinceDate ?? undefined,
|
||||
};
|
||||
|
||||
console.log(`[EmailImport] Manual check triggered for user ${userId}`);
|
||||
|
||||
@@ -1566,6 +1566,7 @@ export const appRouter = router({
|
||||
emailImportHost: z.string().nullable().optional(),
|
||||
emailImportPort: z.number().min(1).max(65535).optional(),
|
||||
emailImportFrequency: z.number().min(1).optional(),
|
||||
emailImportSinceDate: z.number().nullable().optional(), // Unix timestamp (s)
|
||||
exportFolder: z.string().nullable().optional(),
|
||||
exportFolderType: z.enum(["local", "teams", "sharepoint"]).optional(),
|
||||
bapExportMode: z.enum(["browser", "folder", "both"]).optional(),
|
||||
|
||||
Reference in New Issue
Block a user