diff options
author | George Hazan <ghazan@miranda.im> | 2022-11-14 20:04:02 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2022-11-14 20:04:02 +0300 |
commit | 2d74ff3a09c40efda6ad6e9c6b569820776a54f1 (patch) | |
tree | a30fa0bca0c7dec52fa5b554b7eccd0993d254fa /protocols/WhatsApp | |
parent | e097a96ae55208292e1800c75b6a1f7766e38964 (diff) |
basic set for storing group chat messages in a database + reusing log settings like show 10 recent messages
Diffstat (limited to 'protocols/WhatsApp')
-rw-r--r-- | protocols/WhatsApp/src/appsync.cpp | 20 | ||||
-rw-r--r-- | protocols/WhatsApp/src/message.cpp | 21 | ||||
-rw-r--r-- | protocols/WhatsApp/src/proto.cpp | 2 |
3 files changed, 21 insertions, 22 deletions
diff --git a/protocols/WhatsApp/src/appsync.cpp b/protocols/WhatsApp/src/appsync.cpp index 8ab4416fc3..f976c580b6 100644 --- a/protocols/WhatsApp/src/appsync.cpp +++ b/protocols/WhatsApp/src/appsync.cpp @@ -273,6 +273,16 @@ void WhatsAppProto::ProcessHistorySync(const Wa__HistorySync *pSync) CMStringA szMessageText(GetMessageText(pMessage->message->message)); if (!szMessageText.IsEmpty()) { auto *key = pMessage->message->key; + + PROTORECVEVENT pre = {}; + pre.timestamp = pMessage->message->messagetimestamp; + pre.szMessage = szMessageText.GetBuffer(); + pre.szMsgId = key->id; + pre.flags = PREF_CREATEREAD; + if (key->fromme) + pre.flags |= PREF_SENT; + ProtoChainRecvMsg(pUser->hContact, &pre); + if (pUser->bIsGroupChat) { GCEVENT gce = {m_szModuleName, 0, GC_EVENT_MESSAGE}; gce.dwFlags = GCEF_UTF8; @@ -283,16 +293,6 @@ void WhatsAppProto::ProcessHistorySync(const Wa__HistorySync *pSync) gce.time = pMessage->message->messagetimestamp; Chat_Event(&gce); } - else { - PROTORECVEVENT pre = {}; - pre.timestamp = pMessage->message->messagetimestamp; - pre.szMessage = szMessageText.GetBuffer(); - pre.szMsgId = key->id; - pre.flags = PREF_CREATEREAD; - if (key->fromme) - pre.flags |= PREF_SENT; - ProtoChainRecvMsg(pUser->hContact, &pre); - } } } } diff --git a/protocols/WhatsApp/src/message.cpp b/protocols/WhatsApp/src/message.cpp index ab9da0102a..4eeb62872a 100644 --- a/protocols/WhatsApp/src/message.cpp +++ b/protocols/WhatsApp/src/message.cpp @@ -209,6 +209,16 @@ void WhatsAppProto::ProcessMessage(WAMSG type, const Wa__WebMessageInfo &msg) if (pUser) { CMStringA szMessageText(GetMessageText(body)); if (!szMessageText.IsEmpty()) { + PROTORECVEVENT pre = {}; + pre.timestamp = timestamp; + pre.szMessage = szMessageText.GetBuffer(); + pre.szMsgId = msgId; + if (type.bOffline) + pre.flags |= PREF_CREATEREAD; + if (key->fromme) + pre.flags |= PREF_SENT; + ProtoChainRecvMsg(pUser->hContact, &pre); + if (pUser->bIsGroupChat) { GCEVENT gce = {m_szModuleName, 0, GC_EVENT_MESSAGE}; gce.dwFlags = GCEF_UTF8; @@ -219,17 +229,6 @@ void WhatsAppProto::ProcessMessage(WAMSG type, const Wa__WebMessageInfo &msg) gce.time = timestamp; Chat_Event(&gce); } - else { - PROTORECVEVENT pre = {}; - pre.timestamp = timestamp; - pre.szMessage = szMessageText.GetBuffer(); - pre.szMsgId = msgId; - if (type.bOffline) - pre.flags |= PREF_CREATEREAD; - if (key->fromme) - pre.flags |= PREF_SENT; - ProtoChainRecvMsg(pUser->hContact, &pre); - } } } diff --git a/protocols/WhatsApp/src/proto.cpp b/protocols/WhatsApp/src/proto.cpp index fbc81be06f..fe036b40b5 100644 --- a/protocols/WhatsApp/src/proto.cpp +++ b/protocols/WhatsApp/src/proto.cpp @@ -93,7 +93,7 @@ WhatsAppProto::WhatsAppProto(const char *proto_name, const wchar_t *username) : // groupchat initialization GCREGISTER gcr = {}; - gcr.dwFlags = GC_TYPNOTIF; + gcr.dwFlags = GC_TYPNOTIF | GC_DATABASE; gcr.ptszDispName = m_tszUserName; gcr.pszModule = m_szModuleName; Chat_Register(&gcr); |