Add comprehensive debug logging for markContactEmailsAsRead to diagnose contactId mismatch
This commit is contained in:
@@ -148,6 +148,19 @@ export const markThreadAsRead = async (userId, threadId) => {
|
|||||||
export const markContactEmailsAsRead = async (userId, contactId) => {
|
export const markContactEmailsAsRead = async (userId, contactId) => {
|
||||||
console.log('🟦 markContactEmailsAsRead called:', { userId, contactId });
|
console.log('🟦 markContactEmailsAsRead called:', { userId, contactId });
|
||||||
|
|
||||||
|
// Get the contact info first
|
||||||
|
const [contact] = await db
|
||||||
|
.select()
|
||||||
|
.from(contacts)
|
||||||
|
.where(eq(contacts.id, contactId))
|
||||||
|
.limit(1);
|
||||||
|
|
||||||
|
console.log('👤 Contact info:', {
|
||||||
|
id: contact?.id,
|
||||||
|
email: contact?.email,
|
||||||
|
name: contact?.name,
|
||||||
|
});
|
||||||
|
|
||||||
// First, check what emails exist for this contact (including already read ones)
|
// First, check what emails exist for this contact (including already read ones)
|
||||||
const allContactEmails = await db
|
const allContactEmails = await db
|
||||||
.select({
|
.select({
|
||||||
@@ -160,13 +173,42 @@ export const markContactEmailsAsRead = async (userId, contactId) => {
|
|||||||
.from(emails)
|
.from(emails)
|
||||||
.where(and(eq(emails.userId, userId), eq(emails.contactId, contactId)));
|
.where(and(eq(emails.userId, userId), eq(emails.contactId, contactId)));
|
||||||
|
|
||||||
console.log('📧 All emails for this contact:', {
|
console.log('📧 All emails for this contact (by contactId):', {
|
||||||
total: allContactEmails.length,
|
total: allContactEmails.length,
|
||||||
unread: allContactEmails.filter(e => !e.isRead).length,
|
unread: allContactEmails.filter(e => !e.isRead).length,
|
||||||
read: allContactEmails.filter(e => e.isRead).length,
|
read: allContactEmails.filter(e => e.isRead).length,
|
||||||
sampleEmails: allContactEmails.slice(0, 3),
|
sampleEmails: allContactEmails.slice(0, 3),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Check if there are emails from this sender but with NULL or different contactId
|
||||||
|
if (contact) {
|
||||||
|
const emailsFromSender = await db
|
||||||
|
.select({
|
||||||
|
id: emails.id,
|
||||||
|
contactId: emails.contactId,
|
||||||
|
isRead: emails.isRead,
|
||||||
|
from: emails.from,
|
||||||
|
subject: emails.subject,
|
||||||
|
})
|
||||||
|
.from(emails)
|
||||||
|
.where(and(
|
||||||
|
eq(emails.userId, userId),
|
||||||
|
or(
|
||||||
|
eq(emails.from, contact.email),
|
||||||
|
like(emails.from, `%<${contact.email}>%`)
|
||||||
|
)
|
||||||
|
))
|
||||||
|
.limit(10);
|
||||||
|
|
||||||
|
console.log('📨 Emails from this sender email (any contactId):', {
|
||||||
|
total: emailsFromSender.length,
|
||||||
|
withContactId: emailsFromSender.filter(e => e.contactId === contactId).length,
|
||||||
|
withNullContactId: emailsFromSender.filter(e => e.contactId === null).length,
|
||||||
|
withDifferentContactId: emailsFromSender.filter(e => e.contactId && e.contactId !== contactId).length,
|
||||||
|
sampleEmails: emailsFromSender.slice(0, 3),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
const result = await db
|
const result = await db
|
||||||
.update(emails)
|
.update(emails)
|
||||||
.set({ isRead: true, updatedAt: new Date() })
|
.set({ isRead: true, updatedAt: new Date() })
|
||||||
|
|||||||
Reference in New Issue
Block a user