aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorGravatar jesopo2019-02-12 11:14:36 +0000
committerGravatar jesopo2019-02-12 11:14:36 +0000
commit144182868c967481c54bdcac713df068068a3066 (patch)
tree949743d0a2454d9810ed9513ef2fe69f7c009e05 /modules
parentPut an strf format for ISO8601 in utils (diff)
Upgrade resume.py to `draft/resume-0.3` and support sending last-read timestamp
Diffstat (limited to 'modules')
-rw-r--r--modules/resume.py44
1 files changed, 22 insertions, 22 deletions
diff --git a/modules/resume.py b/modules/resume.py
index c3999c3d..9f10086b 100644
--- a/modules/resume.py
+++ b/modules/resume.py
@@ -1,16 +1,22 @@
from src import ModuleManager, utils
-CAP = "draft/resume-0.2"
+CAP = "draft/resume-0.3"
class Module(ModuleManager.BaseModule):
- def _get_token(self, server):
- return server.connection_params.args.get("resume-token", (None, None))
- def _set_token(Self, server, nickname, token):
- server.connection_params.args["resume-token"] = (nickname, token)
+ def _setting(self, new):
+ return "resume-token%s" % ("-new" if new else "")
+ def _get_token(self, server, new=False):
+ return server.get_setting(self._setting(new), None)
+ def _set_token(self, server, token, new=False):
+ server.set_setting(self._setting(new), token)
+ def _del_token(self, server, new=False):
+ server.del_setting(self._setting(new))
+
+ def _get_timestamp(self, server):
+ return server.get_setting("last-read", None)
@utils.hook("received.cap.ls")
def on_cap_ls(self, event):
- nickname, token = self._get_token(event["server"])
if CAP in event["capabilities"]:
event["server"].queue_capability(CAP)
@@ -26,26 +32,20 @@ class Module(ModuleManager.BaseModule):
elif event["args"][0] == "ERR":
self.log.info("Failed to resume session: %s", [event["args"][1]])
elif event["args"][0] == "TOKEN":
- event["server"].connection_params.args["new-resume-token"
- ] = event["args"][1]
- nickname, token = self._get_token(event["server"])
+ token = self._get_token(event["server"])
+ self._set_token(event["server"], event["args"][1], new=True)
+
+ if token:
+ timestamp = self._get_timestamp(event["server"])
- if nickname and token:
- event["server"].send("RESUME %s %s" % (nickname, token))
+ event["server"].send("RESUME %s%s" %
+ (token, " %s" % timestamp if timestamp else ""))
event["server"].cap_started = False
event["server"].capability_done("resume")
@utils.hook("received.numeric.001")
def on_connect(self, event):
- new_token = event["server"].connection_params.args.get(
- "new-resume-token", None)
+ new_token = self._get_token(event["server"], new=True)
if new_token:
- self._set_token(event["server"], event["server"].nickname,
- new_token)
- del event["server"].connection_params.args["new-resume-token"]
-
- @utils.hook("self.nick")
- def nick_change(self, event):
- nickname, token = self._get_token(event["server"])
- if nickname and token:
- self._set_token(event["server"], event["new_nickname"], token)
+ self._set_token(event["server"], new_token)
+ self._del_token(event["server"], new=True)