From 1fd5bc207716cf4e4549fdc92b38ef8b1f61a775 Mon Sep 17 00:00:00 2001 From: LilSpazJoekp <15524072+LilSpazJoekp@users.noreply.github.com> Date: Sat, 21 May 2022 13:11:45 -0700 Subject: [PATCH] Don't set obj_ids since it can be missing data --- praw/objector.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/praw/objector.py b/praw/objector.py index e386a1d13..cbea3e63f 100644 --- a/praw/objector.py +++ b/praw/objector.py @@ -67,6 +67,7 @@ def _objectify_dict(self, data): "conversations", "conversation", }.intersection(data): + # fetched conversation data.update( data.pop("conversation") if "conversation" in data @@ -78,12 +79,24 @@ def _objectify_dict(self, data): "legacyFirstMessageId", "state", }.issubset(data): + # not fetched conversation i.e., from conversations() + del data["objIds"] # delete objIds since could be missing data parser = self.parsers["ModmailConversation"] elif {"conversationIds", "conversations", "messages"}.issubset(data): - data["conversations"] = [ - data["conversations"][conversation_id] - for conversation_id in data["conversationIds"] - ] + # modmail conversations + conversations = [] + for conversation_id in data["conversationIds"]: + conversation = data["conversations"][conversation_id] + # set if the numMessages is same as number of messages in objIds + if conversation["numMessages"] == len( + [obj for obj in conversation["objIds"] if obj["key"] == "messages"] + ): + conversation["messages"] = [ + self.objectify(data["messages"][obj_id["id"]]) + for obj_id in conversation["objIds"] + ] + conversations.append(conversation) + data["conversations"] = conversations data = snake_case_keys(data) parser = self.parsers["ModmailConversations-list"] elif {"actionTypeId", "author", "date"}.issubset(data):