diff --git a/convore/api.py b/convore/api.py index 7e75c81..abaf564 100644 --- a/convore/api.py +++ b/convore/api.py @@ -134,6 +134,12 @@ class Topics(SyncedList): def list(self): return self.data + def insert(self, index, object): + return self.data.insert(index, object) + + def append(self, object): + return self.data.append(object) + def get(self, key): r = get('topics', key) topic = self._create_topic_from_api(deserialize(r.content)['topic']) @@ -177,13 +183,19 @@ class Messages(SyncedList): self.data = [] r = get('topics', self.topic.id, 'messages') - for _message in deserialize(r.content)['messages']: - + messages = deserialize(r.content)['messages'] + idx = 0 + msg_count = len(messages) + unread_count = self.topic.unread + for message_data in messages: + idx = idx + 1 message = models.Message() - message.import_from_api(_message) + message.import_from_api(message_data) message.topic = self.topic + message.unread = idx > msg_count - unread_count self.data.append(message) + def create(self, message): params = {'topic_id': self.topic.id, 'message': message} r = post(params ,'topics', self.topic.id, 'messages', 'create') diff --git a/convore/core.py b/convore/core.py index a45c7da..430c8c1 100644 --- a/convore/core.py +++ b/convore/core.py @@ -62,14 +62,18 @@ class Convore(object): try: for data in deserialize(r.content)['messages']: - class_ = LIVE_TYPES[data['kind']] + try: + class_ = LIVE_TYPES[data['kind']] + except KeyError: + continue + message = class_() message.import_from_api(data) if data['kind'] == 'read': group = self.groups.get(data['group_id']) message.topic = group.topics.get(data['topic_id']) elif data['kind'] == 'topic': - message.group = self.groups.get(data['group_id']) + message.group = self.groups.get(data['group']) elif data['kind'] == 'message': group = self.groups.get(data['group']) message.topic = group.topics.get(data['topic']['id']) diff --git a/convore/models.py b/convore/models.py index b45b93a..bdae48d 100644 --- a/convore/models.py +++ b/convore/models.py @@ -129,6 +129,7 @@ class Message(object): self.message = None self.date_created = None self.user = None + self.unread = False def import_from_api(self, data):