diff --git a/packages/backend/convex/email.ts b/packages/backend/convex/email.ts index a55fa32..09befce 100644 --- a/packages/backend/convex/email.ts +++ b/packages/backend/convex/email.ts @@ -138,9 +138,25 @@ export const enfileirarEmail = mutation({ agendadaPara: args.agendadaPara, }); - // O cron job processará emails automaticamente: - // - Emails sem agendamento serão processados imediatamente (próxima execução do cron) - // - Emails agendados serão processados quando a hora chegar + // Processar imediatamente se não houver agendamento ou se o agendamento já passou + const agora = Date.now(); + const deveProcessarAgora = + args.agendadaPara === undefined || + args.agendadaPara <= agora; + + if (deveProcessarAgora) { + // Agendar envio imediato via action (não bloqueia a mutation) + ctx.scheduler + .runAfter(0, api.actions.email.enviar, { + emailId: emailId, + }) + .catch((error: unknown) => { + const errorMessage = error instanceof Error ? error.message : String(error); + console.error(`Erro ao agendar envio imediato de email ${emailId}:`, errorMessage); + // Não falha a mutation se houver erro ao agendar - o cron pode processar depois + }); + } + // Emails agendados para o futuro serão processados pelo cron quando a hora chegar return emailId; },