fix(carousel): skip segundo create() + tctoken + ephemeral para corrigir 479

Três correções para eliminar erro 479 em dispositivos vinculados:

1. Skip WAProto.Message.create() em generateWAMessageFromContent para carousel
   - O carousel já foi processado com fromObject() (conversão profunda)
   - O segundo create() faz cópia rasa que pode perder tipos protobuf nested
   - Preserva a estrutura deep: cards > headers > imageMessage > nativeFlowMessage

2. Skip tctoken no stanza para carousel
   - Implementações que funcionam não incluem tctoken para carousel
   - Pode causar rejeição 479 em dispositivos vinculados (Web/Desktop)

3. Skip contextInfo.expiration (ephemeral) para carousel
   - Se mensagens temporárias estão ativadas, contextInfo.expiration era
     adicionado ao interactiveMessage, o que pode causar 479
   - Implementações que funcionam não passam por generateWAMessageFromContent

https://claude.ai/code/session_01EK9NpViRCtda1WAvFd8ptR
This commit is contained in:
Claude
2026-02-06 20:56:11 +00:00
parent 4037b3fcdd
commit dede2fa3c0
2 changed files with 18 additions and 3 deletions
+4 -1
View File
@@ -1443,8 +1443,11 @@ export const makeMessagesSocket = (config: SocketConfig) => {
}
}
// Skip tctoken for carousel messages - not present in working implementations
// and may cause error 479 on linked devices
const isCarouselForTcToken = isCarouselMessage(message)
const contactTcTokenData =
!isGroup && !isRetryResend && !isStatus ? await authState.keys.get('tctoken', [destinationJid]) : {}
!isGroup && !isRetryResend && !isStatus && !isCarouselForTcToken ? await authState.keys.get('tctoken', [destinationJid]) : {}
const tcTokenBuffer = contactTcTokenData[destinationJid]?.token