diff options
Diffstat (limited to 'protocols/WhatsAppWeb/src/server.cpp')
-rw-r--r-- | protocols/WhatsAppWeb/src/server.cpp | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/protocols/WhatsAppWeb/src/server.cpp b/protocols/WhatsAppWeb/src/server.cpp index c771d72220..ff6b0c2740 100644 --- a/protocols/WhatsAppWeb/src/server.cpp +++ b/protocols/WhatsAppWeb/src/server.cpp @@ -577,14 +577,27 @@ void WhatsAppProto::ProcessAdd(const CMStringA &type, const WANode *root) CMStringA szText(szMsgText); szText.Replace("%", "%%"); - GCEVENT gce = { m_szModuleName, 0, GC_EVENT_MESSAGE }; - gce.pszID.a = jid; - gce.dwFlags = GCEF_ADDTOLOG | GCEF_UTF8; - gce.pszUID.a = payLoad.participant().c_str(); - gce.pszText.a = szText; - gce.time = dwTimestamp; - gce.bIsMe = true; - Chat_Event(&gce); + CMStringA szUserJid(payLoad.participant().c_str()); + if (!szUserJid.Replace("@s.whatsapp.net", "@c.us")) + szUserJid.Replace("@g.whatsapp.net", "@g.us"); + + if (pUser->bInited) { + GCEVENT gce = { m_szModuleName, 0, GC_EVENT_MESSAGE }; + gce.pszID.a = jid; + gce.dwFlags = GCEF_ADDTOLOG | GCEF_UTF8; + gce.pszUID.a = szUserJid; + gce.pszText.a = szText; + gce.time = dwTimestamp; + gce.bIsMe = (jid == m_szJid); + Chat_Event(&gce); + } + else { + auto *pMsg = new WAHistoryMessage; + pMsg->jid = jid; + pMsg->text = szText; + pMsg->timestamp = dwTimestamp; + pUser->arHistory.insert(pMsg); + } } else { PROTORECVEVENT pre = { 0 }; |