Fetch difference only if it is worth it

This commit is contained in:
Lonami Exo 2019-05-04 19:48:36 +02:00
parent f5e611e4d2
commit 532bd1c916
2 changed files with 9 additions and 2 deletions

View File

@ -295,7 +295,10 @@ class UpdateMethods(UserMethods):
# We could add a lock to not fetch the same pts twice if we are # We could add a lock to not fetch the same pts twice if we are
# already fetching it. However this does not happen in practice, # already fetching it. However this does not happen in practice,
# which makes sense, because different updates have different pts. # which makes sense, because different updates have different pts.
await self._get_difference(update, channel_id, pts_date) if self._state_cache.update(update, check_only=True):
# If the update doesn't have pts, fetching won't do anything.
# For example, UpdateUserStatus or UpdateChatUserTyping.
await self._get_difference(update, channel_id, pts_date)
built = EventBuilderDict(self, update) built = EventBuilderDict(self, update)
if self._conversations: if self._conversations:

View File

@ -87,12 +87,16 @@ class StateCache:
types.updates.ChannelDifferenceEmpty, types.updates.ChannelDifferenceEmpty,
types.updates.ChannelDifferenceTooLong, types.updates.ChannelDifferenceTooLong,
types.updates.ChannelDifference types.updates.ChannelDifference
)) )),
check_only=False
): ):
""" """
Update the state with the given update. Update the state with the given update.
""" """
cid = update.CONSTRUCTOR_ID cid = update.CONSTRUCTOR_ID
if check_only:
return cid in has_pts or cid in has_date or cid in has_channel_pts
if cid in has_pts: if cid in has_pts:
if cid in has_date: if cid in has_date:
self._pts_date = update.pts, update.date self._pts_date = update.pts, update.date