Call GetState on login to init MessageBox

This commit is contained in:
Lonami Exo 2022-05-16 10:04:49 +02:00
parent 3c7f53802f
commit 898eb5b82f
2 changed files with 12 additions and 3 deletions

View File

@ -7,6 +7,7 @@ import warnings
from .. import utils, helpers, errors, password as pwd_mod from .. import utils, helpers, errors, password as pwd_mod
from ..tl import types, functions, custom from ..tl import types, functions, custom
from .._updates import SessionState
if typing.TYPE_CHECKING: if typing.TYPE_CHECKING:
from .telegramclient import TelegramClient from .telegramclient import TelegramClient
@ -371,7 +372,7 @@ class AuthMethods:
self._tos = result.terms_of_service self._tos = result.terms_of_service
raise errors.PhoneNumberUnoccupiedError(request=request) raise errors.PhoneNumberUnoccupiedError(request=request)
return self._on_login(result.user) return await self._on_login(result.user)
async def sign_up( async def sign_up(
self: 'TelegramClient', self: 'TelegramClient',
@ -466,9 +467,9 @@ class AuthMethods:
await self( await self(
functions.help.AcceptTermsOfServiceRequest(self._tos.id)) functions.help.AcceptTermsOfServiceRequest(self._tos.id))
return self._on_login(result.user) return await self._on_login(result.user)
def _on_login(self, user): async def _on_login(self, user):
""" """
Callback called whenever the login or sign up process completes. Callback called whenever the login or sign up process completes.
@ -478,6 +479,9 @@ class AuthMethods:
self._self_input_peer = utils.get_input_peer(user, allow_self=False) self._self_input_peer = utils.get_input_peer(user, allow_self=False)
self._authorized = True self._authorized = True
state = await self(functions.updates.GetStateRequest())
self._message_box.load(SessionState(0, 0, 0, state.pts, state.qts, int(state.date.timestamp()), state.seq, 0), [])
return user return user
async def send_code_request( async def send_code_request(

View File

@ -559,6 +559,11 @@ class TelegramBaseClient(abc.ABC):
LAYER, self._init_request LAYER, self._init_request
)) ))
if self._message_box.is_empty():
me = await self.get_me()
if me:
await self._on_login(me) # also calls GetState to initialize the MessageBox
self._updates_handle = self.loop.create_task(self._update_loop()) self._updates_handle = self.loop.create_task(self._update_loop())
self._keepalive_handle = self.loop.create_task(self._keepalive_loop()) self._keepalive_handle = self.loop.create_task(self._keepalive_loop())