Mark emails as read on JMAP server (fixes Betterbird showing unread)

This commit is contained in:
richardtekula
2025-11-20 08:15:43 +01:00
parent 4159a2aadb
commit 05be898259
3 changed files with 53 additions and 1 deletions

View File

@@ -208,8 +208,39 @@ export const markContactEmailsRead = async (req, res) => {
const userId = req.userId;
const { contactId } = req.params;
// Get contact to find which email account it belongs to
const contact = await contactService.getContactById(contactId, userId);
if (!contact) {
return res.status(404).json({
success: false,
error: { message: 'Kontakt nenájdený', statusCode: 404 },
});
}
// Get email account with credentials
const emailAccount = await emailAccountService.getEmailAccountWithCredentials(contact.emailAccountId, userId);
const jmapConfig = getJmapConfigFromAccount(emailAccount);
// Mark emails as read in database and get the updated emails
const result = await crmEmailService.markContactEmailsAsRead(userId, contactId);
// Also mark emails as read on JMAP server
if (result.emails && result.emails.length > 0) {
logger.info(`Marking ${result.emails.length} emails as read on JMAP server`);
for (const email of result.emails) {
if (!email.jmapId) {
continue;
}
try {
await markEmailAsRead(jmapConfig, userId, email.jmapId, true);
logger.debug(`✅ Marked JMAP email as read: ${email.jmapId}`);
} catch (jmapError) {
logger.error('Failed to mark JMAP email as read', { jmapId: email.jmapId, error: jmapError.message });
}
}
}
res.status(200).json({
success: true,
message: `Označených ${result.count} emailov ako prečítaných`,