From e6dced80cf5619e7ba510964037030649dd91173 Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Mon, 17 Dec 2018 16:13:57 +0100 Subject: [PATCH] Update get_dialogs to use the new refactored Dialogs type --- pyrogram/client/methods/chats/get_dialogs.py | 76 +++----------------- 1 file changed, 9 insertions(+), 67 deletions(-) diff --git a/pyrogram/client/methods/chats/get_dialogs.py b/pyrogram/client/methods/chats/get_dialogs.py index 045c541a..655bb431 100644 --- a/pyrogram/client/methods/chats/get_dialogs.py +++ b/pyrogram/client/methods/chats/get_dialogs.py @@ -18,12 +18,12 @@ import pyrogram from pyrogram.api import functions, types -from ...ext import BaseClient, utils +from ...ext import BaseClient class GetDialogs(BaseClient): def get_dialogs(self, - offset_dialogs=None, + offset_dialog=None, limit: int = 100, pinned_only: bool = False): """Use this method to get the user's dialogs @@ -31,18 +31,18 @@ class GetDialogs(BaseClient): You can get up to 100 dialogs at once. Args: + offset_dialog (:obj:`Dialog`): + Pass the last dialog object to retrieve the next dialogs chunk starting it. + Defaults to None (start from the beginning). + limit (``str``, *optional*): Limits the number of dialogs to be retrieved. - Defaults to 100 + Defaults to 100. pinned_only (``bool``, *optional*): Pass True if you want to get only pinned dialogs. Defaults to False. - offset_dialogs (:obj:`Dialogs`): - Pass the previous dialogs object to retrieve the next dialogs chunk starting from the last dialog. - Defaults to None (start from the beginning). - Returns: On success, a :obj:`Dialogs` object is returned. @@ -53,22 +53,9 @@ class GetDialogs(BaseClient): if pinned_only: r = self.send(functions.messages.GetPinnedDialogs()) else: - offset_date = 0 - - if offset_dialogs: - for dialog in reversed(offset_dialogs.dialogs): - top_message = dialog.top_message - - if top_message: - message_date = top_message.date - - if message_date: - offset_date = message_date - break - r = self.send( functions.messages.GetDialogs( - offset_date=offset_date, + offset_date=offset_dialog.top_message.date if offset_dialog else 0, offset_id=0, offset_peer=types.InputPeerEmpty(), limit=limit, @@ -77,49 +64,4 @@ class GetDialogs(BaseClient): ) ) - users = {i.id: i for i in r.users} - chats = {i.id: i for i in r.chats} - messages = {} - - for message in r.messages: - to_id = message.to_id - - if isinstance(to_id, types.PeerUser): - if message.out: - chat_id = to_id.user_id - else: - chat_id = message.from_id - elif isinstance(to_id, types.PeerChat): - chat_id = -to_id.chat_id - else: - chat_id = int("-100" + str(to_id.channel_id)) - - messages[chat_id] = utils.parse_messages(self, message, users, chats) - - dialogs = [] - - for dialog in r.dialogs: - chat_id = dialog.peer - - if isinstance(chat_id, types.PeerUser): - chat_id = chat_id.user_id - elif isinstance(chat_id, types.PeerChat): - chat_id = -chat_id.chat_id - else: - chat_id = int("-100" + str(chat_id.channel_id)) - - dialogs.append( - pyrogram.Dialog( - chat=utils.parse_dialog_chat(dialog.peer, users, chats), - top_message=messages.get(chat_id), - unread_messages_count=dialog.unread_count, - unread_mentions_count=dialog.unread_mentions_count, - unread_mark=dialog.unread_mark, - is_pinned=dialog.pinned - ) - ) - - return pyrogram.Dialogs( - total_count=getattr(r, "count", len(r.dialogs)), - dialogs=dialogs - ) + return pyrogram.Dialogs.parse(self, r)