aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/Commands.md3
-rw-r--r--wee_slack.py40
2 files changed, 31 insertions, 12 deletions
diff --git a/docs/Commands.md b/docs/Commands.md
index ca687e4..d47a17b 100644
--- a/docs/Commands.md
+++ b/docs/Commands.md
@@ -109,10 +109,11 @@ By default GitHub Pages will see a temporary code used to create your token
### rehistory
```
-/rehistory
+/rehistory [-remote]
```
Reload the history in the current channel.
+With -remote the history will be downloaded again from Slack.
### reply
diff --git a/wee_slack.py b/wee_slack.py
index 635dfe2..ab855ac 100644
--- a/wee_slack.py
+++ b/wee_slack.py
@@ -1491,7 +1491,7 @@ class SlackTeam(object):
class SlackChannelCommon(object):
- def prnt_message(self, message, history_message=False):
+ def prnt_message(self, message, history_message=False, no_log=False):
text = self.render(message)
thread_channel = isinstance(self, SlackThreadChannel)
@@ -1525,7 +1525,7 @@ class SlackChannelCommon(object):
self.buffer_prnt(prefix, text, message.ts, tagset=tagset,
tag_nick=message.sender_plain, history_message=history_message,
- extra_tags=extra_tags)
+ no_log=no_log, extra_tags=extra_tags)
def send_add_reaction(self, msg_id, reaction):
self.send_change_reaction("reactions.add", msg_id, reaction)
@@ -1878,6 +1878,11 @@ class SlackChannel(SlackChannelCommon):
s = SlackRequest(self.team, join_method, {"users": self.user, "return_im": True}, channel=self)
self.eventrouter.receive(s)
+ def reprint_messages(self):
+ w.buffer_clear(self.channel_buffer)
+ for message in self.messages.values():
+ self.prnt_message(message, no_log=True)
+
def clear_messages(self):
w.buffer_clear(self.channel_buffer)
self.messages = OrderedDict()
@@ -1892,7 +1897,7 @@ class SlackChannel(SlackChannelCommon):
{"channel": self.identifier}, channel=self)
self.eventrouter.receive(s)
- def buffer_prnt(self, nick, text, timestamp, tagset, tag_nick=None, history_message=False, extra_tags=None):
+ def buffer_prnt(self, nick, text, timestamp, tagset, tag_nick=None, history_message=False, no_log=False, extra_tags=None):
data = "{}\t{}".format(format_nick(nick, self.last_line_from), text)
self.last_line_from = nick
ts = SlackTS(timestamp)
@@ -1905,7 +1910,7 @@ class SlackChannel(SlackChannelCommon):
if not backlog:
self.new_messages = True
- no_log = history_message and backlog
+ no_log = no_log or history_message and backlog
self_msg = tag_nick == self.team.nick
tags = tag(tagset, user=tag_nick, self_msg=self_msg, backlog=backlog, no_log=no_log, extra_tags=extra_tags)
@@ -2288,7 +2293,7 @@ class SlackThreadChannel(SlackChannelCommon):
args.update(post_data)
super(SlackThreadChannel, self).mark_read(ts=ts, update_remote=update_remote, force=force, post_data=args)
- def buffer_prnt(self, nick, text, timestamp, tagset, tag_nick=None, history_message=False, extra_tags=None):
+ def buffer_prnt(self, nick, text, timestamp, tagset, tag_nick=None, history_message=False, no_log=False, extra_tags=None):
data = "{}\t{}".format(format_nick(nick, self.last_line_from), text)
self.last_line_from = nick
ts = SlackTS(timestamp)
@@ -2298,7 +2303,7 @@ class SlackThreadChannel(SlackChannelCommon):
if not backlog:
self.new_messages = True
- no_log = history_message and backlog
+ no_log = no_log or history_message and backlog
self_msg = tag_nick == self.team.nick
tags = tag(tagset, user=tag_nick, self_msg=self_msg, backlog=backlog, no_log=no_log, extra_tags=extra_tags)
@@ -2309,8 +2314,7 @@ class SlackThreadChannel(SlackChannelCommon):
def get_history(self):
self.got_history = True
- for message in chain([self.parent_message], self.parent_message.submessages):
- self.prnt_message(message, history_message=True)
+ self.print_messages(history_message=True)
if len(self.parent_message.submessages) < self.parent_message.number_of_replies():
s = SlackRequest(self.team, "conversations.replies",
{"channel": self.identifier, "ts": self.parent_message.ts},
@@ -2373,6 +2377,14 @@ class SlackThreadChannel(SlackChannelCommon):
self.parent_message.sender, self.render(self.parent_message))
w.buffer_set(self.channel_buffer, "title", topic)
+ def print_messages(self, history_message=False, no_log=False):
+ for message in chain([self.parent_message], self.parent_message.submessages):
+ self.prnt_message(message, history_message, no_log)
+
+ def reprint_messages(self):
+ w.buffer_clear(self.channel_buffer)
+ self.print_messages(no_log=True)
+
def destroy_buffer(self, update_remote):
self.channel_buffer = None
self.got_history = False
@@ -4327,14 +4339,20 @@ command_reply.completion = '%(threads)|-alsochannel %(threads)'
@utf8_decode
def command_rehistory(data, current_buffer, args):
"""
- /rehistory
+ /rehistory [-remote]
Reload the history in the current channel.
+ With -remote the history will be downloaded again from Slack.
"""
channel = EVENTROUTER.weechat_controller.buffers[current_buffer]
- channel.clear_messages()
- channel.get_history()
+ if args == "-remote":
+ channel.clear_messages()
+ channel.get_history()
+ else:
+ channel.reprint_messages()
return w.WEECHAT_RC_OK_EAT
+command_rehistory.completion = '-remote'
+
@slack_buffer_required
@utf8_decode