diff --git a/fbchat/graphql.py b/fbchat/graphql.py index f4ee001..a0b9500 100644 --- a/fbchat/graphql.py +++ b/fbchat/graphql.py @@ -181,6 +181,7 @@ def graphql_to_thread(thread): c_info = get_customization_info(thread) participants = [node['messaging_actor'] for node in thread['all_participants']['nodes']] user = next(p for p in participants if p['id'] == thread['thread_key']['other_user_id']) + last_message_timestamp = thread['last_message']['nodes'][0]['timestamp_precise'] return User( user['id'], @@ -196,7 +197,8 @@ def graphql_to_thread(thread): emoji=c_info.get('emoji'), own_nickname=c_info.get('own_nickname'), photo=user['big_image_src'].get('uri'), - message_count=thread.get('messages_count') + message_count=thread.get('messages_count'), + last_message_timestamp=last_message_timestamp ) else: raise FBchatException('Unknown thread type: {}, with data: {}'.format(thread.get('thread_type'), thread)) @@ -205,6 +207,7 @@ def graphql_to_group(group): if group.get('image') is None: group['image'] = {} c_info = get_customization_info(group) + last_message_timestamp = group['last_message']['nodes'][0]['timestamp_precise'] return Group( group['thread_key']['thread_fbid'], participants=set([node['messaging_actor']['id'] for node in group['all_participants']['nodes']]), @@ -213,7 +216,8 @@ def graphql_to_group(group): emoji=c_info.get('emoji'), photo=group['image'].get('uri'), name=group.get('name'), - message_count=group.get('messages_count') + message_count=group.get('messages_count'), + last_message_timestamp=last_message_timestamp ) def graphql_to_room(room): diff --git a/fbchat/models.py b/fbchat/models.py index ad90ea2..947d943 100644 --- a/fbchat/models.py +++ b/fbchat/models.py @@ -451,10 +451,10 @@ class ThreadType(Enum): class ThreadLocation(Enum): """Used to specify where a thread is located (inbox, pending, archived, other).""" - INBOX = 'inbox' - PENDING = 'pending' - ARCHIVED = 'action:archived' - OTHER = 'other' + INBOX = 'INBOX' + PENDING = 'PENDING' + ARCHIVED = 'ARCHIVED' + OTHER = 'OTHER' class TypingStatus(Enum): """Used to specify whether the user is typing or has stopped typing"""