Marks read messages every two minutes

This commit is contained in:
Manuel Cortez 2016-06-06 04:27:07 -05:00
parent 2b9aa467bd
commit 8d9082235b
3 changed files with 28 additions and 2 deletions

View File

@ -274,13 +274,18 @@ class empty(object):
class chatBuffer(baseBuffer): class chatBuffer(baseBuffer):
def onFocus(self, *args, **kwargs): def onFocus(self, *args, **kwargs):
pass msg = self.session.db[self.name]["items"][-1]
if msg["read_state"] == 0 and msg["id"] not in self.reads:
self.reads.append(msg["id"])
self.session.db[self.name]["items"][-1]["read_state"] = 1
def create_tab(self, parent): def create_tab(self, parent):
self.tab = home.chatTab(parent) self.tab = home.chatTab(parent)
def connect_events(self): def connect_events(self):
widgetUtils.connect_event(self.tab.send, widgetUtils.BUTTON_PRESSED, self.send_chat_to_user) widgetUtils.connect_event(self.tab.send, widgetUtils.BUTTON_PRESSED, self.send_chat_to_user)
self.tab.set_focus_function(self.onFocus)
def get_items(self, show_nextpage=False): def get_items(self, show_nextpage=False):
retrieved = True # Control variable for handling unauthorised/connection errors. retrieved = True # Control variable for handling unauthorised/connection errors.
@ -308,6 +313,10 @@ class chatBuffer(baseBuffer):
if text == "": return if text == "": return
response = self.session.vk.client.messages.send(user_id=self.kwargs["user_id"], message=text) response = self.session.vk.client.messages.send(user_id=self.kwargs["user_id"], message=text)
def __init__(self, *args, **kwargs):
super(chatBuffer, self).__init__(*args, **kwargs)
self.reads = []
class peopleBuffer(feedBuffer): class peopleBuffer(feedBuffer):
def create_tab(self, parent): def create_tab(self, parent):

View File

@ -61,6 +61,10 @@ class Controller(object):
self.window.insert_buffer(home.tab, _(u"Home"), self.window.search("posts")) self.window.insert_buffer(home.tab, _(u"Home"), self.window.search("posts"))
self.repeatedUpdate = RepeatingTimer(180, self.update_all_buffers) self.repeatedUpdate = RepeatingTimer(180, self.update_all_buffers)
self.repeatedUpdate.start() self.repeatedUpdate.start()
self.readMarker = RepeatingTimer(120, self.mark_as_read)
self.readMarker.start()
feed = buffers.feedBuffer(parent=self.window.tb, name="me_feed", composefunc="compose_status", session=self.session, endpoint="get", parent_endpoint="wall", extended=1, count=self.session.settings["buffers"]["count_for_wall_buffers"]) feed = buffers.feedBuffer(parent=self.window.tb, name="me_feed", composefunc="compose_status", session=self.session, endpoint="get", parent_endpoint="wall", extended=1, count=self.session.settings["buffers"]["count_for_wall_buffers"])
self.buffers.append(feed) self.buffers.append(feed)
self.window.insert_buffer(feed.tab, _(u"My wall"), self.window.search("posts")) self.window.insert_buffer(feed.tab, _(u"My wall"), self.window.search("posts"))
@ -317,9 +321,19 @@ class Controller(object):
def set_online(self): def set_online(self):
r = self.session.vk.client.account.setOnline() r = self.session.vk.client.account.setOnline()
print "online: %d" % (r,)
def create_unread_messages(self): def create_unread_messages(self):
msgs = self.session.vk.client.messages.getDialogs(count=200, unread=1) msgs = self.session.vk.client.messages.getDialogs(count=200, unread=1)
for i in msgs["items"]: for i in msgs["items"]:
wx.CallAfter(self.chat_from_id, i["message"]["user_id"], setfocus=False) wx.CallAfter(self.chat_from_id, i["message"]["user_id"], setfocus=False)
def mark_as_read(self):
print "Marking as read"
ids = ""
for i in self.buffers:
if hasattr(i, "reads"):
for z in i.reads:
ids = ids+"%d," % (z,)
i.reads = []
if ids != "":
response = self.session.vk.client.messages.markAsRead(message_ids=ids)

View File

@ -143,6 +143,9 @@ class chatTab(wx.Panel):
box.Add(self.text, 0, wx.ALL, 5) box.Add(self.text, 0, wx.ALL, 5)
return box return box
def set_focus_function(self, focus_function):
self.list.list.Bind(wx.EVT_LIST_ITEM_FOCUSED, focus_function)
class peopleTab(homeTab): class peopleTab(homeTab):
def create_list(self): def create_list(self):