diff options
author | George Hazan <george.hazan@gmail.com> | 2024-01-27 20:23:20 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2024-01-27 20:23:20 +0300 |
commit | d18fdf58c517c957809e9ec0b8044a05984de7c6 (patch) | |
tree | 795967aee27142f012f47e739b1bbb31c53b7450 /protocols | |
parent | abc610a264a0a9c03effe579283c7d4c4fdf08b5 (diff) |
fixes #4140 (NewStory: удаление отдельных сообщений)
Diffstat (limited to 'protocols')
-rw-r--r-- | protocols/Discord/src/dispatch.cpp | 2 | ||||
-rw-r--r-- | protocols/ICQ-WIM/src/proto.cpp | 5 | ||||
-rw-r--r-- | protocols/ICQ-WIM/src/proto.h | 2 | ||||
-rw-r--r-- | protocols/ICQ-WIM/src/server.cpp | 2 | ||||
-rw-r--r-- | protocols/Telegram/src/proto.cpp | 26 | ||||
-rw-r--r-- | protocols/Telegram/src/proto.h | 3 | ||||
-rw-r--r-- | protocols/Telegram/src/server.cpp | 4 | ||||
-rw-r--r-- | protocols/VKontakte/src/vk_history.cpp | 2 |
8 files changed, 26 insertions, 20 deletions
diff --git a/protocols/Discord/src/dispatch.cpp b/protocols/Discord/src/dispatch.cpp index 0c6062f1d5..642694e3cb 100644 --- a/protocols/Discord/src/dispatch.cpp +++ b/protocols/Discord/src/dispatch.cpp @@ -456,7 +456,7 @@ void CDiscordProto::OnCommandMessageDelete(const JSONNode &pRoot) if (!msgid.IsEmpty()) {
MEVENT hEvent = db_event_getById(m_szModuleName, msgid);
if (hEvent)
- db_event_delete(hEvent, true);
+ db_event_delete(hEvent, CDF_FROM_SERVER);
}
}
diff --git a/protocols/ICQ-WIM/src/proto.cpp b/protocols/ICQ-WIM/src/proto.cpp index 48f94f5714..ac144f2cdf 100644 --- a/protocols/ICQ-WIM/src/proto.cpp +++ b/protocols/ICQ-WIM/src/proto.cpp @@ -226,8 +226,11 @@ void CIcqProto::BatchDeleteMsg() m_hDeleteContact = INVALID_CONTACT_ID;
}
-void CIcqProto::OnEventDeleted(MCONTACT hContact, MEVENT hEvent)
+void CIcqProto::OnEventDeleted(MCONTACT hContact, MEVENT hEvent, int flags)
{
+ if (!(flags & CDF_FROM_SERVER))
+ return;
+
if (m_hDeleteContact != INVALID_CONTACT_ID)
if (m_hDeleteContact != hContact)
BatchDeleteMsg();
diff --git a/protocols/ICQ-WIM/src/proto.h b/protocols/ICQ-WIM/src/proto.h index 7fe31a13e0..b7f05974ae 100644 --- a/protocols/ICQ-WIM/src/proto.h +++ b/protocols/ICQ-WIM/src/proto.h @@ -444,7 +444,7 @@ class CIcqProto : public PROTO<CIcqProto> void OnContactAdded(MCONTACT) override;
bool OnContactDeleted(MCONTACT, uint32_t flags) override;
MWindow OnCreateAccMgrUI(MWindow) override;
- void OnEventDeleted(MCONTACT, MEVENT) override;
+ void OnEventDeleted(MCONTACT, MEVENT, int) override;
void OnEventEdited(MCONTACT, MEVENT, const DBEVENTINFO &dbei) override;
void OnMarkRead(MCONTACT, MEVENT) override;
void OnModulesLoaded() override;
diff --git a/protocols/ICQ-WIM/src/server.cpp b/protocols/ICQ-WIM/src/server.cpp index cd024c1a08..10a7905f27 100644 --- a/protocols/ICQ-WIM/src/server.cpp +++ b/protocols/ICQ-WIM/src/server.cpp @@ -824,7 +824,7 @@ void CIcqProto::OnGetPatches(MHttpResponse *pReply, AsyncHttpRequest *pReq) char msgId[100];
_i64toa(it.first, msgId, 10);
if (MEVENT hEvent = db_event_getById(m_szModuleName, msgId))
- db_event_delete(hEvent, true);
+ db_event_delete(hEvent, CDF_FROM_SERVER);
}
}
}
diff --git a/protocols/Telegram/src/proto.cpp b/protocols/Telegram/src/proto.cpp index 3b79b01e66..f1315dc56d 100644 --- a/protocols/Telegram/src/proto.cpp +++ b/protocols/Telegram/src/proto.cpp @@ -214,9 +214,9 @@ void CTelegramProto::OnErase() DeleteDirectoryTreeW(GetProtoFolder(), false); } -void CTelegramProto::OnEventDeleted(MCONTACT hContact, MEVENT hDbEvent) +void CTelegramProto::OnEventDeleted(MCONTACT hContact, MEVENT hDbEvent, int flags) { - if (!hContact) + if (!hContact || !(flags & CDF_FROM_SERVER)) return; auto *pUser = FindUser(GetId(hContact)); @@ -224,19 +224,21 @@ void CTelegramProto::OnEventDeleted(MCONTACT hContact, MEVENT hDbEvent) return; DB::EventInfo dbei(hDbEvent, false); - if (dbei.szId) { - mir_cslock lck(m_csDeleteMsg); - if (m_deleteChatId) { - if (m_deleteChatId != pUser->chatId) - SendDeleteMsg(); + if (!dbei.szId) + return; - m_impl.m_deleteMsg.Stop(); - } + mir_cslock lck(m_csDeleteMsg); + if (m_deleteChatId) { + if (m_deleteChatId != pUser->chatId) + SendDeleteMsg(); - m_deleteChatId = pUser->chatId; - m_deleteIds.push_back(dbei2id(dbei)); - m_impl.m_deleteMsg.Start(500); + m_impl.m_deleteMsg.Stop(); } + + m_bDeleteForAll = (flags & CDF_FOR_EVERYONE) != 0; + m_deleteChatId = pUser->chatId; + m_deleteIds.push_back(dbei2id(dbei)); + m_impl.m_deleteMsg.Start(500); } void CTelegramProto::OnEventEdited(MCONTACT hContact, MEVENT, const DBEVENTINFO &dbei) diff --git a/protocols/Telegram/src/proto.h b/protocols/Telegram/src/proto.h index 800a718740..830b937e05 100644 --- a/protocols/Telegram/src/proto.h +++ b/protocols/Telegram/src/proto.h @@ -198,6 +198,7 @@ class CTelegramProto : public PROTO<CTelegramProto> TD::array<TD::int53> m_markIds; mir_cs m_csDeleteMsg; + bool m_bDeleteForAll; TD::int53 m_deleteChatId = 0; TD::array<TD::int53> m_deleteIds; @@ -370,7 +371,7 @@ public: bool OnContactDeleted(MCONTACT hContact, uint32_t flags) override; MWindow OnCreateAccMgrUI(MWindow hwndParent) override; void OnErase() override; - void OnEventDeleted(MCONTACT, MEVENT) override; + void OnEventDeleted(MCONTACT, MEVENT, int) override; void OnEventEdited(MCONTACT, MEVENT, const DBEVENTINFO &dbei) override; void OnMarkRead(MCONTACT, MEVENT) override; void OnModulesLoaded() override; diff --git a/protocols/Telegram/src/server.cpp b/protocols/Telegram/src/server.cpp index 78f4f43134..2082a73e13 100644 --- a/protocols/Telegram/src/server.cpp +++ b/protocols/Telegram/src/server.cpp @@ -152,7 +152,7 @@ void CTelegramProto::SendDeleteMsg() m_impl.m_deleteMsg.Stop();
mir_cslock lck(m_csDeleteMsg);
- SendQuery(new TD::deleteMessages(m_deleteChatId, std::move(m_deleteIds), true));
+ SendQuery(new TD::deleteMessages(m_deleteChatId, std::move(m_deleteIds), m_bDeleteForAll));
m_deleteChatId = 0;
}
@@ -694,7 +694,7 @@ void CTelegramProto::ProcessDeleteMessage(TD::updateDeleteMessages *pObj) for (auto &it : pObj->message_ids_)
if (MEVENT hEvent = db_event_getById(m_szModuleName, msg2id(pObj->chat_id_, it)))
- db_event_delete(hEvent, true);
+ db_event_delete(hEvent, CDF_FROM_SERVER);
}
void CTelegramProto::ProcessGroups(TD::updateChatFolders *pObj)
diff --git a/protocols/VKontakte/src/vk_history.cpp b/protocols/VKontakte/src/vk_history.cpp index bb386c812d..2c228a27e0 100644 --- a/protocols/VKontakte/src/vk_history.cpp +++ b/protocols/VKontakte/src/vk_history.cpp @@ -309,7 +309,7 @@ void CVkProto::OnReceiveHistoryMessages(MHttpResponse *reply, AsyncHttpRequest * MEVENT hDbEvent = db_event_getById(m_szModuleName, strcat(szMid, "_"));
if (hDbEvent)
- db_event_delete(hDbEvent, true);
+ db_event_delete(hDbEvent, CDF_FROM_SERVER);
if (bIsRead && bIsOut && tDateTime > tLastReadMessageTime)
tLastReadMessageTime = tDateTime;
|