summaryrefslogtreecommitdiff
path: root/protocols/Telegram/src
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Telegram/src')
-rw-r--r--protocols/Telegram/src/proto.cpp23
-rw-r--r--protocols/Telegram/src/proto.h1
-rw-r--r--protocols/Telegram/src/server.cpp15
3 files changed, 33 insertions, 6 deletions
diff --git a/protocols/Telegram/src/proto.cpp b/protocols/Telegram/src/proto.cpp
index b3a6b2466e..98d055af2b 100644
--- a/protocols/Telegram/src/proto.cpp
+++ b/protocols/Telegram/src/proto.cpp
@@ -216,6 +216,24 @@ void CTelegramProto::OnEventDeleted(MCONTACT hContact, MEVENT hDbEvent)
}
}
+void CTelegramProto::OnEventEdited(MCONTACT hContact, MEVENT, const DBEVENTINFO &dbei)
+{
+ if (!hContact)
+ return;
+
+ auto *pUser = FindUser(GetId(hContact));
+ if (!pUser)
+ return;
+
+ if (dbei.szId && dbei.cbBlob && dbei.eventType == EVENTTYPE_MESSAGE) {
+ auto text = TD::make_object<TD::formattedText>();
+ text->text_ = (char*)dbei.pBlob;
+
+ auto content = TD::make_object<TD::inputMessageText>(std::move(text), false, false);
+ SendQuery(new TD::editMessageText(pUser->chatId, _atoi64(dbei.szId), 0, std::move(content)));
+ }
+}
+
void CTelegramProto::OnMarkRead(MCONTACT hContact, MEVENT hDbEvent)
{
if (!hContact)
@@ -225,9 +243,8 @@ void CTelegramProto::OnMarkRead(MCONTACT hContact, MEVENT hDbEvent)
if (!pUser)
return;
- DBEVENTINFO dbei = {};
- db_event_get(hDbEvent, &dbei);
- if (dbei.szId) {
+ DB::EventInfo dbei(hDbEvent, false);
+ if (dbei && dbei.szId) {
mir_cslock lck(m_csMarkRead);
if (m_markChatId) {
if (m_markChatId != hContact)
diff --git a/protocols/Telegram/src/proto.h b/protocols/Telegram/src/proto.h
index 32376a5710..ad11cce7bf 100644
--- a/protocols/Telegram/src/proto.h
+++ b/protocols/Telegram/src/proto.h
@@ -342,6 +342,7 @@ public:
MWindow OnCreateAccMgrUI(MWindow hwndParent) override;
void OnErase() override;
void OnEventDeleted(MCONTACT, MEVENT) override;
+ void OnEventEdited(MCONTACT, MEVENT, const DBEVENTINFO &dbei) override;
void OnMarkRead(MCONTACT, MEVENT) override;
void OnModulesLoaded() override;
void OnReceiveOfflineFile(DB::FILE_BLOB &blob, void *ft) override;
diff --git a/protocols/Telegram/src/server.cpp b/protocols/Telegram/src/server.cpp
index 4226d8a413..792f68140e 100644
--- a/protocols/Telegram/src/server.cpp
+++ b/protocols/Telegram/src/server.cpp
@@ -685,12 +685,21 @@ void CTelegramProto::ProcessMessageContent(TD::updateMessageContent *pObj)
return;
}
- /*
- CMStringA szText(GetMessageText(pUser, pObj->new_content_.get()));
+ auto msg = TD::make_object<TD::message>();
+ msg->content_ = std::move(pObj->new_content_);
+ CMStringA szText(GetMessageText(pUser, msg.get()));
if (szText.IsEmpty()) {
debugLogA("this message was not processed, ignored");
return;
- }*/
+ }
+
+ DBEVENTINFO dbei = {};
+ if (db_event_get(hDbEvent, &dbei))
+ return;
+
+ dbei.cbBlob = szText.GetLength();
+ dbei.pBlob = (uint8_t *)szText.c_str();
+ db_event_edit(hDbEvent, &dbei, true);
}
void CTelegramProto::ProcessOption(TD::updateOption *pObj)