diff --git a/server/src/index.js b/server/src/index.js index 3d26353..06862ac 100644 --- a/server/src/index.js +++ b/server/src/index.js @@ -3552,7 +3552,25 @@ async function performWhatsAppTenantSync(tenantId, channel, options = {}) { } const jid = canonicalWhatsAppJid(rawJid, identity) const conversationId = `${channel.id}:${jid}` - const currentBeforeSync = await getResource(tenantId, 'conversations', conversationId) || rawConversation + let canonicalConversation = await getResource(tenantId, 'conversations', conversationId) + if ( + rawConversation + && rawConversationId !== conversationId + && !canonicalConversation + && !await getResource(tenantId, 'conversation-tombstones', conversationId) + ) { + canonicalConversation = await putResource(tenantId, 'conversations', { + ...rawConversation, + id: conversationId, + whatsappJid: jid, + whatsappJidAliases: Array.from(new Set([ + ...(rawConversation.whatsappJidAliases || []), + rawJid, + jid, + ])), + }) + } + const currentBeforeSync = canonicalConversation || rawConversation const currentCustomer = currentBeforeSync?.customerId ? await getResource(tenantId, 'customers', currentBeforeSync.customerId) : rawCustomer