diff options
author | Ryan Huber <rhuber@gmail.com> | 2014-10-15 23:42:33 -0700 |
---|---|---|
committer | Ryan Huber <rhuber@gmail.com> | 2014-10-15 23:42:33 -0700 |
commit | f5cd93e36818eabc2b402dc7ed2ef00a4915c48b (patch) | |
tree | 579fae136901cfd5f47d594efa6f9f8e0128f2aa /wee_slack.py | |
parent | bea7d576fc284cf998ad9387aca35e77532e6614 (diff) | |
download | wee-slack-f5cd93e36818eabc2b402dc7ed2ef00a4915c48b.tar.gz |
experimental: set unread marker when entering channel
Diffstat (limited to 'wee_slack.py')
-rw-r--r-- | wee_slack.py | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/wee_slack.py b/wee_slack.py index ab3d446..a89ecc8 100644 --- a/wee_slack.py +++ b/wee_slack.py @@ -241,9 +241,11 @@ def process_message(message_json): if message_json.has_key("user"): typing.delete(message_json["channel"], message_json["user"]) user = user_hash[message_json["user"]] + else: + user = "unknown user" channel = message_json["channel"] if message_json["message"].has_key("attachments"): - attachments = [x["text"] for x in message_json["message"]["attachments"]] + attachments = [x["fallback"] for x in message_json["message"]["attachments"]] text = "\n".join(attachments) text = text.encode('ascii', 'ignore') else: @@ -289,13 +291,28 @@ def buffer_typing_update_cb(data, remaining_calls): # w.bar_item_update("slack_typing_notice") return w.WEECHAT_RC_OK +def hotlist_cache_update_cb(data, remaining_calls): + #this keeps the hotlist dupe up to date for the buffer switch, but is prob technically a race condition. (meh) + global hotlist + hotlist = w.infolist_get("hotlist", "", "") + return w.WEECHAT_RC_OK + def buffer_switch_cb(signal, sig_type, data): #NOTE: we flush both the next and previous buffer so that all read pointer id up to date - global previous_buffer + global previous_buffer, hotlist if reverse_channel_hash.has_key(previous_buffer): slack_mark_channel_read(reverse_channel_hash[previous_buffer]) if current_buffer_name().startswith(server): channel_name = current_buffer_name(short=True) + #TESTING ... this code checks to see if there are any unread messages and doesn't reposition the read marker if there are + count = 0 + while w.infolist_next(hotlist): + if w.infolist_pointer(hotlist, "buffer_pointer") == w.current_buffer(): + for i in [0,1,2,3]: + count += w.infolist_integer(hotlist, "count_0%s" % (i)) + if count == 0: + w.buffer_set(w.current_buffer(), "unread", "") + #end TESTING if reverse_channel_hash.has_key(channel_name): slack_mark_channel_read(reverse_channel_hash[channel_name]) previous_buffer = channel_name @@ -563,6 +580,7 @@ if __name__ == "__main__": name = None connected = False never_away = False + hotlist = w.infolist_get("hotlist", "", "") ### End global var section @@ -573,6 +591,7 @@ if __name__ == "__main__": ### attach to the weechat hooks we need w.hook_timer(1000, 0, 0, "typing_update_cb", "") w.hook_timer(1000, 0, 0, "buffer_typing_update_cb", "") + w.hook_timer(1000, 0, 0, "hotlist_cache_update_cb", "") w.hook_timer(1000 * 3, 0, 0, "slack_ping_cb", "") w.hook_timer(1000 * 60* 29, 0, 0, "slack_never_away_cb", "") w.hook_signal('buffer_switch', "buffer_switch_cb", "") |