mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2024-11-26 03:13:45 +03:00
Properly load and save channel state
This commit is contained in:
parent
f7ccf8d843
commit
f775484172
|
@ -14,7 +14,7 @@ from .._crypto import rsa
|
|||
from .._misc import markdown, enums, helpers
|
||||
from .._network import MTProtoSender, Connection, transports
|
||||
from .._sessions import Session, SQLiteSession, MemorySession
|
||||
from .._sessions.types import DataCenter, SessionState
|
||||
from .._sessions.types import DataCenter, SessionState, EntityType, ChannelState
|
||||
from .._updates import EntityCache, MessageBox
|
||||
|
||||
DEFAULT_DC_ID = 2
|
||||
|
@ -235,7 +235,12 @@ async def connect(self: 'TelegramClient') -> None:
|
|||
else:
|
||||
try_fetch_user = self._session_state.user_id == 0
|
||||
if self._catch_up:
|
||||
self._message_box.load(self._session_state, await self._session.get_all_channel_states())
|
||||
channel_states = await self._session.get_all_channel_states()
|
||||
self._message_box.load(self._session_state, channel_states)
|
||||
for state in channel_states:
|
||||
entity = await self._session.get_entity(EntityType.CHANNEL, state.channel_id)
|
||||
if entity:
|
||||
self._entity_cache.put(entity)
|
||||
|
||||
dc = all_dcs.get(self._session_state.dc_id)
|
||||
if dc is None:
|
||||
|
@ -366,7 +371,7 @@ async def _disconnect(self: 'TelegramClient'):
|
|||
|
||||
session_state, channel_states = self._message_box.session_state()
|
||||
for channel_id, pts in channel_states.items():
|
||||
await self._session.insert_channel_state(channel_id, pts)
|
||||
await self._session.insert_channel_state(ChannelState(channel_id=channel_id, pts=pts))
|
||||
|
||||
await self._replace_session_state(**session_state)
|
||||
|
||||
|
|
|
@ -98,3 +98,6 @@ class EntityCache:
|
|||
|
||||
def get_all_entities(self):
|
||||
return [Entity(ty, id, hash) for id, (hash, ty) in self.hash_map.items()]
|
||||
|
||||
def put(self, entity):
|
||||
self.hash_map[entity.id] = (entity.access_hash, entity.ty)
|
||||
|
|
Loading…
Reference in New Issue
Block a user