summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2023-03-29 17:23:28 +0300
committerGeorge Hazan <ghazan@miranda.im>2023-03-29 17:23:28 +0300
commit7fc55cc54b38ebeebe3e55d47562146e20a11ac8 (patch)
treeb897b3345c1775a749333c9a10f049aad2dcaa56
parentac83f65e4a9fc70a4e44ddd4870fc6431bf7187b (diff)
fixes #3457 (Telegram: при первом входе прилетает только один чат)
-rw-r--r--protocols/Telegram/src/auth.cpp5
-rw-r--r--protocols/Telegram/src/proto.h1
-rw-r--r--protocols/Telegram/src/server.cpp7
3 files changed, 11 insertions, 2 deletions
diff --git a/protocols/Telegram/src/auth.cpp b/protocols/Telegram/src/auth.cpp
index 8a64b2a015..d55ca3a436 100644
--- a/protocols/Telegram/src/auth.cpp
+++ b/protocols/Telegram/src/auth.cpp
@@ -93,6 +93,11 @@ void CTelegramProto::ProcessAuth(TD::updateAuthorizationState *pObj)
{
pAuthState = std::move(pObj->authorization_state_);
switch (pAuthState->get_id()) {
+ case TD::authorizationStateReady::ID:
+ if (pConnState->get_id() == TD::connectionStateReady::ID)
+ OnLoggedIn();
+ break;
+
case TD::authorizationStateWaitTdlibParameters::ID:
if (!m_bUnregister) {
MFileVersion v;
diff --git a/protocols/Telegram/src/proto.h b/protocols/Telegram/src/proto.h
index 99ab0898ec..a386466176 100644
--- a/protocols/Telegram/src/proto.h
+++ b/protocols/Telegram/src/proto.h
@@ -161,6 +161,7 @@ class CTelegramProto : public PROTO<CTelegramProto>
std::unique_ptr<td::ClientManager> m_pClientManager;
TD::object_ptr<TD::AuthorizationState> pAuthState;
+ TD::object_ptr<TD::ConnectionState> pConnState;
mir_cs m_csMarkRead;
TD::int53 m_markChatId = 0;
diff --git a/protocols/Telegram/src/server.cpp b/protocols/Telegram/src/server.cpp
index 07c1dba093..311633ed9f 100644
--- a/protocols/Telegram/src/server.cpp
+++ b/protocols/Telegram/src/server.cpp
@@ -425,7 +425,9 @@ void CTelegramProto::ProcessChatPosition(TD::updateChatPosition *pObj)
void CTelegramProto::ProcessConnectionState(TD::updateConnectionState *pObj)
{
- switch (pObj->state_->get_id()) {
+ pConnState = std::move(pObj->state_);
+
+ switch (pConnState->get_id()) {
case TD::connectionStateConnecting::ID:
debugLogA("Connection state: connecting");
break;
@@ -444,7 +446,8 @@ void CTelegramProto::ProcessConnectionState(TD::updateConnectionState *pObj)
case TD::connectionStateReady::ID:
debugLogA("Connection state: connected");
- OnLoggedIn();
+ if (pAuthState->get_id() == TD::authorizationStateReady::ID)
+ OnLoggedIn();
break;
}
}