diff options
author | Trygve Aaberge <trygveaa@gmail.com> | 2017-09-23 17:34:56 +0200 |
---|---|---|
committer | Trygve Aaberge <trygveaa@gmail.com> | 2017-09-23 23:34:34 +0200 |
commit | eb99eb71d1a38f48aa226cce3a731c92ed2223ee (patch) | |
tree | 62517420f5d7f1b943fc1dc305e268574bbc5c83 | |
parent | 2f43d1b6466c74e8774e2833214f847eb559f15a (diff) | |
download | wee-slack-eb99eb71d1a38f48aa226cce3a731c92ed2223ee.tar.gz |
fix: Use the timestamp of the last message in mark_read
When sending a mark read message to slack, use the timestamp of the last
message in the channel, instead of the current timestamp. This should
prevent potentially marking messages as read, if they arrive after
mark_read was called and the clock of the slack server and the machine
wee-slack runs on is not exactly in sync.
According to issue #307 messages might also be marked as read if they
arrive right after you switch buffer, and you have a slow internet
connection. Though, since the time used in mark_read is set
synchronously when the buffer is changed, I'm not sure if that can be
the case. Either way, I think this patch should fix the issue.
If there are no messages in the channel, fall back to using the current
time as timestamp.
Fixes #307
-rw-r--r-- | wee_slack.py | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/wee_slack.py b/wee_slack.py index 90b56ac..be12cc9 100644 --- a/wee_slack.py +++ b/wee_slack.py @@ -1445,7 +1445,8 @@ class SlackChannel(object): def mark_read(self, ts=None, update_remote=True, force=False): if not ts: - ts = SlackTS() + msg_timestamps = self.sorted_message_keys() + ts = msg_timestamps[-1] if msg_timestamps else SlackTS() if self.new_messages or force: if self.channel_buffer: w.buffer_set(self.channel_buffer, "unread", "") |