summaryrefslogtreecommitdiff
path: root/protocols/Telegram/src/server.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Telegram/src/server.cpp')
-rw-r--r--protocols/Telegram/src/server.cpp60
1 files changed, 38 insertions, 22 deletions
diff --git a/protocols/Telegram/src/server.cpp b/protocols/Telegram/src/server.cpp
index 4d45416ab7..b5670b27fc 100644
--- a/protocols/Telegram/src/server.cpp
+++ b/protocols/Telegram/src/server.cpp
@@ -22,7 +22,7 @@ void __cdecl CMTProto::ServerThread(void *)
m_bRunning = true;
m_bTerminated = m_bAuthorized = false;
- SendQuery(new td::td_api::getOption("version"));
+ SendQuery(new TD::getOption("version"));
while (!m_bTerminated) {
ProcessResponse(m_pClientMmanager->receive(1));
@@ -55,7 +55,7 @@ void CMTProto::OnLoggedIn()
ProtoBroadcastAck(0, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)m_iStatus, m_iDesiredStatus);
m_iStatus = m_iDesiredStatus;
- SendQuery(new td::td_api::getChats(td::tl::unique_ptr<td::td_api::chatListMain>(), 1000));
+ SendQuery(new TD::getChats(td::tl::unique_ptr<TD::chatListMain>(), 1000));
}
///////////////////////////////////////////////////////////////////////////////
@@ -77,25 +77,28 @@ void CMTProto::ProcessResponse(td::ClientManager::Response response)
}
switch (response.object->get_id()) {
- case td::td_api::updateAuthorizationState::ID:
- ProcessAuth((td::td_api::updateAuthorizationState *)response.object.get());
+ case TD::updateAuthorizationState::ID:
+ ProcessAuth((TD::updateAuthorizationState *)response.object.get());
break;
- case td::td_api::updateChatFilters::ID:
- ProcessGroups((td::td_api::updateChatFilters *)response.object.get());
+ case TD::updateChatFilters::ID:
+ ProcessGroups((TD::updateChatFilters *)response.object.get());
break;
- case td::td_api::updateUser::ID:
- ProcessUser((td::td_api::updateUser *)response.object.get());
+ case TD::updateNewChat::ID:
+ ProcessChat((TD::updateNewChat *)response.object.get());
break;
+ case TD::updateUser::ID:
+ ProcessUser((TD::updateUser *)response.object.get());
+ break;
}
}
-void CMTProto::SendQuery(td::td_api::Function *pFunc, TG_QUERY_HANDLER pHandler)
+void CMTProto::SendQuery(TD::Function *pFunc, TG_QUERY_HANDLER pHandler)
{
int queryId = ++m_iQueryId;
- m_pClientMmanager->send(m_iClientId, queryId, td::td_api::object_ptr<td::td_api::Function>(pFunc));
+ m_pClientMmanager->send(m_iClientId, queryId, TD::object_ptr<TD::Function>(pFunc));
if (pHandler)
m_arRequests.insert(new TG_REQUEST(queryId, pHandler));
@@ -103,7 +106,20 @@ void CMTProto::SendQuery(td::td_api::Function *pFunc, TG_QUERY_HANDLER pHandler)
///////////////////////////////////////////////////////////////////////////////
-void CMTProto::ProcessGroups(td::td_api::updateChatFilters *pObj)
+void CMTProto::ProcessChat(TD::updateNewChat *pObj)
+{
+ auto &pChat = pObj->chat_;
+ if (pChat->type_->get_id() != TD::chatTypePrivate::ID) {
+ debugLogA("Only private chats are currently supported");
+ return;
+ }
+
+ auto *pUser = AddUser(pChat->id_, false);
+ if (!pChat->title_.empty())
+ setUString(pUser->hContact, "Nick", pChat->title_.c_str());
+}
+
+void CMTProto::ProcessGroups(TD::updateChatFilters *pObj)
{
for (auto &grp : pObj->chat_filters_) {
if (grp->icon_name_ != "Custom")
@@ -127,26 +143,26 @@ void CMTProto::ProcessGroups(td::td_api::updateChatFilters *pObj)
}
}
-void CMTProto::ProcessUser(td::td_api::updateUser *pObj)
+void CMTProto::ProcessUser(TD::updateUser *pObj)
{
auto *pUser = pObj->user_.get();
- MCONTACT hContact = AddUser(pUser->id_, false);
- UpdateString(hContact, "FirstName", pUser->first_name_);
- UpdateString(hContact, "LastName", pUser->last_name_);
- UpdateString(hContact, "Phone", pUser->phone_number_);
+ auto *pu = AddUser(pUser->id_, false);
+ UpdateString(pu->hContact, "FirstName", pUser->first_name_);
+ UpdateString(pu->hContact, "LastName", pUser->last_name_);
+ UpdateString(pu->hContact, "Phone", pUser->phone_number_);
if (pUser->usernames_)
- UpdateString(hContact, "Nick", pUser->usernames_->editable_username_);
+ UpdateString(pu->hContact, "Nick", pUser->usernames_->editable_username_);
if (pUser->is_premium_)
- ExtraIcon_SetIconByName(g_plugin.m_hIcon, hContact, "tg_premium");
+ ExtraIcon_SetIconByName(g_plugin.m_hIcon, pu->hContact, "tg_premium");
else
- ExtraIcon_SetIconByName(g_plugin.m_hIcon, hContact, nullptr);
+ ExtraIcon_SetIconByName(g_plugin.m_hIcon, pu->hContact, nullptr);
if (pUser->status_) {
- if (pUser->status_->get_id() == td::td_api::userStatusOffline::ID) {
- auto *pOffline = (td::td_api::userStatusOffline *)pUser->status_.get();
- setDword(hContact, "LastSeen", pOffline->was_online_);
+ if (pUser->status_->get_id() == TD::userStatusOffline::ID) {
+ auto *pOffline = (TD::userStatusOffline *)pUser->status_.get();
+ setDword(pu->hContact, "LastSeen", pOffline->was_online_);
}
}
}