summaryrefslogtreecommitdiff
path: root/protocols/WhatsApp
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2022-11-14 20:04:02 +0300
committerGeorge Hazan <ghazan@miranda.im>2022-11-14 20:04:02 +0300
commit2d74ff3a09c40efda6ad6e9c6b569820776a54f1 (patch)
treea30fa0bca0c7dec52fa5b554b7eccd0993d254fa /protocols/WhatsApp
parente097a96ae55208292e1800c75b6a1f7766e38964 (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.cpp20
-rw-r--r--protocols/WhatsApp/src/message.cpp21
-rw-r--r--protocols/WhatsApp/src/proto.cpp2
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);