summaryrefslogtreecommitdiff
path: root/poezio/mam.py
diff options
context:
space:
mode:
authorroot <madhurgarg96@gmail.com>2019-08-26 05:53:03 +0530
committerroot <madhurgarg96@gmail.com>2019-08-26 05:53:03 +0530
commitbd5ebba7f8901b731bac7e32ae57b317dee1a6ee (patch)
treee1c5dab654b372324a49a037107c2346d013b20e /poezio/mam.py
parent0556b3d7a31cfeebe56875ba8a7c0f0a20ad810e (diff)
downloadpoezio-bd5ebba7f8901b731bac7e32ae57b317dee1a6ee.tar.gz
poezio-bd5ebba7f8901b731bac7e32ae57b317dee1a6ee.tar.bz2
poezio-bd5ebba7f8901b731bac7e32ae57b317dee1a6ee.tar.xz
poezio-bd5ebba7f8901b731bac7e32ae57b317dee1a6ee.zip
Added action parameter in mam_scroll, so that MAM query made on join (or any other query) is not considered as 'pageup'
Diffstat (limited to 'poezio/mam.py')
-rw-r--r--poezio/mam.py21
1 files changed, 12 insertions, 9 deletions
diff --git a/poezio/mam.py b/poezio/mam.py
index 2dfa251d..514c7b60 100644
--- a/poezio/mam.py
+++ b/poezio/mam.py
@@ -62,13 +62,13 @@ def add_line(tab, text_buffer: TextBuffer, text: str, str_time: str, nick: str,
jid=None,
)
-async def query(tab, remote_jid, top, start=None, end=None, before=None):
+async def query(tab, remote_jid, action, top, start=None, end=None, before=None):
text_buffer = tab._text_buffer
try:
iq = await tab.core.xmpp.plugin['xep_0030'].get_info(jid=remote_jid)
except (IqError, IqTimeout):
return tab.core.information('Failed to retrieve messages', 'Error')
- if 'urn:xmpp:mam:2' not in iq['disco_info'].get_features():
+ if 'urn:xmpp:mam:2' not in iq['disco_info'].get_features() and action is 'scroll':
return tab.core.information("%s doesn't support MAM." % remote_jid, "Info")
if top:
if isinstance(tab, tabs.MucTab):
@@ -80,7 +80,8 @@ async def query(tab, remote_jid, top, start=None, end=None, before=None):
results = tab.core.xmpp['xep_0313'].retrieve(jid=remote_jid,
iterator=True, reverse=top, end=end)
except (IqError, IqTimeout):
- return tab.core.information('Failed to retrieve messages', 'Error')
+ if action is 'scroll':
+ return tab.core.information('Failed to retrieve messages', 'Error')
else:
try:
if before is not None:
@@ -90,7 +91,8 @@ async def query(tab, remote_jid, top, start=None, end=None, before=None):
results = tab.core.xmpp['xep_0313'].retrieve(with_jid=remote_jid,
iterator=True, reverse=top, end=end)
except (IqError, IqTimeout):
- return tab.core.information('Failed to retrieve messages', 'Error')
+ if action is 'scroll':
+ return tab.core.information('Failed to retrieve messages', 'Error')
else:
if 'conference' in list(iq['disco_info']['identities'])[0]:
try:
@@ -125,7 +127,8 @@ async def query(tab, remote_jid, top, start=None, end=None, before=None):
tab.last_stanza_id = msg['mam_result']['id']
nick = str(message['from'])
add_line(tab, text_buffer, message['body'], timestamp, nick, top)
- tab.text_win.scroll_up(len(tab.text_win.built_lines))
+ if action is 'scroll':
+ tab.text_win.scroll_up(len(tab.text_win.built_lines))
else:
for msg in rsm['mam']['results']:
forwarded = msg['mam_result']['forwarded']
@@ -134,11 +137,11 @@ async def query(tab, remote_jid, top, start=None, end=None, before=None):
nick = str(message['from'])
add_line(tab, text_buffer, message['body'], timestamp, nick, top)
tab.core.refresh_window()
- if len(msgs) == 0:
+ if len(msgs) == 0 and action is 'scroll':
return tab.core.information('No more messages left to retrieve', 'Info')
tab.query_status = False
-def mam_scroll(tab):
+def mam_scroll(tab, action):
remote_jid = tab.jid
text_buffer = tab._text_buffer
before = tab.last_stanza_id
@@ -157,9 +160,9 @@ def mam_scroll(tab):
tab.text_win.pos += tab.text_win.height - 1
if tab.text_win.pos + tab.text_win.height > len(tab.text_win.built_lines):
if before is None:
- asyncio.ensure_future(query(tab, remote_jid, top=True, end=end))
+ asyncio.ensure_future(query(tab, remote_jid, action, top=True, end=end))
else:
- asyncio.ensure_future(query(tab, remote_jid, top=True, before=before))
+ asyncio.ensure_future(query(tab, remote_jid, action, top=True, before=before))
tab.query_status = True
tab.text_win.pos = len(tab.text_win.built_lines) - tab.text_win.height
if tab.text_win.pos < 0: