Checkpoint: Ajout du bouton "Vérifier maintenant" pour forcer une vérification immédiate des emails sans attendre le prochain cycle automatique.
This commit is contained in:
@@ -442,6 +442,40 @@ export function isEmailImportServiceRunning(userId: number): boolean {
|
||||
return activeIntervals.has(userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Manually trigger an immediate email check for a user
|
||||
*/
|
||||
export async function triggerEmailCheck(userId: number): Promise<{ success: boolean; message: string }> {
|
||||
try {
|
||||
// Get user's import settings
|
||||
const settings = await getImportSettingsByUser(userId);
|
||||
|
||||
if (!settings || settings.emailImportEnabled !== 1) {
|
||||
return { success: false, message: "Import par email non activ\u00e9" };
|
||||
}
|
||||
|
||||
if (!settings.emailImportAddress || !settings.emailImportPassword || !settings.emailImportHost) {
|
||||
return { success: false, message: "Configuration IMAP incompl\u00e8te" };
|
||||
}
|
||||
|
||||
const config: EmailImportConfig = {
|
||||
userId,
|
||||
emailAddress: settings.emailImportAddress,
|
||||
password: settings.emailImportPassword,
|
||||
host: settings.emailImportHost,
|
||||
port: settings.emailImportPort || 993,
|
||||
};
|
||||
|
||||
console.log(`[EmailImport] Manual check triggered for user ${userId}`);
|
||||
await checkEmailsForPDFs(config);
|
||||
|
||||
return { success: true, message: "V\u00e9rification termin\u00e9e avec succ\u00e8s" };
|
||||
} catch (error: any) {
|
||||
console.error(`[EmailImport] Error during manual check for user ${userId}:`, error);
|
||||
return { success: false, message: `Erreur: ${error.message}` };
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop all email import services
|
||||
*/
|
||||
|
||||
@@ -34,7 +34,7 @@ import { loginLocal, hashPassword, getAzureAuthUrl, isAzureAdConfigured, generat
|
||||
import { extractInvoicesWithMistral, generateMetadataJSON } from "./invoiceExtractor";
|
||||
import { localStoragePut, generateStorageKey } from "./localStorage";
|
||||
import { testSftpConnection, exportInvoiceToSftp, getUserSftpConfig } from "./sftpExport";
|
||||
import { startEmailImportService, stopEmailImportService, isEmailImportServiceRunning } from "./emailImportService";
|
||||
import { startEmailImportService, stopEmailImportService, isEmailImportServiceRunning, triggerEmailCheck } from "./emailImportService";
|
||||
import { startFolderImportService, stopFolderImportService, isFolderImportServiceRunning } from "./folderImportService";
|
||||
import { TRPCError } from "@trpc/server";
|
||||
|
||||
@@ -614,8 +614,12 @@ export const appRouter = router({
|
||||
}),
|
||||
|
||||
status: protectedProcedure.query(async ({ ctx }) => {
|
||||
const isRunning = isEmailImportServiceRunning(ctx.user.id);
|
||||
return { isRunning };
|
||||
return { isRunning: isEmailImportServiceRunning(ctx.user.id) };
|
||||
}),
|
||||
|
||||
checkNow: protectedProcedure.mutation(async ({ ctx }) => {
|
||||
const result = await triggerEmailCheck(ctx.user.id);
|
||||
return result;
|
||||
}),
|
||||
}),
|
||||
|
||||
|
||||
Reference in New Issue
Block a user