aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Fix errors when joining DMs and multiparty DMsEric Wang2017-10-101-2/+2
| | | | | | | | | | | - The DM error was caused by not specifying `return_im` (https://api.slack.com/methods/im.open#arguments) in the request which led to `unread_count_display` not being included in the response and a KeyError in `handle_imopen` - The MPDM error was caused by using "name" instead of "channel" for the channel ID (https://api.slack.com/methods/groups.info#arguments) in the request which led to an error response and a KeyError in `handle_groupsinfo`
* Merge pull request #443 from trygveaa/fix/topic-command-refactorTrygve Aaberge2017-10-093-43/+150
|\ | | | | fix: Make /topic behave the same way as on IRC
| * test: Add tests for topic_command_cbTrygve Aaberge2017-10-081-1/+53
| |
| * test: Map all weechat return codes in testsTrygve Aaberge2017-10-081-1/+3
| | | | | | | | | | So we can assert on all of the return values. Since True == 1 in python, this doesn't change the value of WEECHAT_RC_OK.
| * fix: Update topic property in channel when topic changesTrygve Aaberge2017-10-081-9/+12
| | | | | | | | | | I also changed the channel to only store the topic value, since that is the only part of the topic property we get from Slack that we use.
| * refactor: Split topic_command_cb and add testsTrygve Aaberge2017-10-082-16/+69
| | | | | | | | | | | | Split out the parts of topic_command_cb that's most interesting and easiest to test into parse_topic_command and add tests for that function.
| * fix: Make /topic behave the same way as on IRCTrygve Aaberge2017-09-251-35/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This refactors the topic command, and makes it behave the same way as it does on IRC. The fixes include: - `/topic` prints the topic instead of clearing it - `/topic #channel` prints the topic for that channel in that channels buffer instead of setting the topic to #channel - `/topic #channel [...]` for a channel that doesn't exist gives a proper error message The patch also removes some unused code, refactors the logic and removes the `/slack topic` command, since using `/topic` should suffice. The reason it returs WEECHAT_RC_OK_EAT when the channel isn't found, is so weechat doesn't print an error message such as: irc: command "topic" must be executed on irc buffer (server or channel) Fixes #405
* | Merge pull request #450 from auscompgeek/thread-switchTrygve Aaberge2017-10-061-0/+2
|\ \ | | | | | | Switch to thread buffer on open if configured
| * | Switch to thread buffer on open if configuredDavid Vo2017-10-061-0/+2
|/ / | | | | | | Obeys the switch_buffer_on_join setting on /thread.
* | Merge pull request #447 from ericdwang/masterTrygve Aaberge2017-10-041-6/+7
|\ \ | | | | | | Update documentation on enabling debug mode
| * | Add documentation on changing debug levelEric Wang2017-10-031-1/+2
| | |
| * | Update documentation on enabling debug modeEric Wang2017-10-031-6/+6
|/ /
* | docs: Remove mention of setallreadmarkersTrygve Aaberge2017-09-301-5/+0
| | | | | | | | | | | | | | This command has been removed. To mark all channels as read you can now run `/input set_unread` instead (note that since this isn't a command specific for wee-slack, it will move the unread markers for all buffers to the bottom, including buffers not belonging to wee-slack).
* | refactor: Swap if conditions for performanceTrygve Aaberge2017-09-291-1/+1
| | | | | | | | Since startswith is faster than in, it's better to check that first.
* | Merge pull request #413 from auscompgeek/buffer-nameTrygve Aaberge2017-09-291-15/+18
|\ \ | | | | | | Make groups and MPDMs distinguishable by prefix
| * | Give MPDMs a short buffer name prefix of @David Vo2017-09-271-6/+3
| | |
| * | SlackMPDMChannel: Refactor name adjustmentDavid Vo2017-09-271-2/+6
| | |
| * | Give groups a configurable buffer name prefixDavid Vo2017-09-271-7/+9
| | |
* | | Merge pull request #441 from trygveaa/feat/support-input-set-unreadTrygve Aaberge2017-09-281-1/+21
|\ \ \ | |/ / |/| | Support `/input set unread` and `/input set_unread_current_buffer`
| * | feat: Add support for /input set_unread(_current_buffer)Trygve Aaberge2017-09-241-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | This hooks into the weechat commands `/input set_unread` and `/input set_unread_current_buffer` and implements them. For set_unread we iterate over all the channels and mark them as read. For set_unread_current_buffer we mark the current buffer as read. Fixes #323
| * | refactor: Set same signature for mark_read everywhereTrygve Aaberge2017-09-241-1/+1
| | | | | | | | | | | | | | | | | | | | | This changes the signature of mark_read in SlackTeam to match the one in SlackChannel. This is done so we can call mark_read on all the items in the list of buffers (which has both teams and channels), without checking if the items are channels.
| * | fix: Set new_messages in set_unread_count_displayTrygve Aaberge2017-09-241-0/+1
| |/ | | | | | | | | | | | | | | | | | | | | | | The new_messages property is used by mark_read to determine if it should excecute. When a channel is initially loaded, new_messages is set to False, and unread_count_display is set to the number of unread messages. new_messages is not set to True until a new message arrives. This means that if you call mark_read after loading a channel, but before a new message has arrived, it won't do anything, even if the channel had unread messages when it was loaded. By setting new_messages in set_unread_count_display, this is fixed.
* | Merge pull request #439 from trygveaa/fix/multiline-prefix-bugTrygve Aaberge2017-09-271-7/+19
|\ \ | | | | | | Ensure that all lines printed to weechat specifies a prefix
| * | fix: Ensure that all lines printed to weechat specifies a prefixTrygve Aaberge2017-09-221-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we print a message with multiple lines to weechat, we want the nick/prefix to appear on the first line, and no prefix on the subsequent lines. When this message is handled by weechat, it processes each line of the message separately, and applies a prefix for each line. It seems to me that if the line doesn't contain any tab characters, it should end up with an empty prefix, and this is what happens for me. However, some users are having issues where both the prefix and the message ends up incorrect (issue #274, #385 and #421), which seems to be related to this. Additionally, if the message contains a tab character on any of the lines after the first, the part before the tab character would be the prefix for that line, which is completely wrong. I haven't seen that happen, as it seems that slack replaces tab characters with spaces, but we should handle it correctly nevertheless. The weechat documentation states that you should use a space followed by a tab character to disable the prefix. This patch inserts this after each newline, so the prefix is disabled for each line except the first. I can't reproduce the issue, so I can't verify if this fixes the issue. As far as I can see, for me the behavior is the same with this patch. Hopefully, this fixes #274.
| * | refactor: Split en/decoding helper into a separate methodTrygve Aaberge2017-09-221-7/+13
| |/ | | | | | | | | | | | | Separate the code for wrapping a method so arguments and return values are encoded/decoded into a new method in WeechatWrapper. This allowes us to use it outside of __getattr__ as well, so we can handle some specific methods differently.
* | Merge pull request #430 from trygveaa/send-multiline-messagesTrygve Aaberge2017-09-271-0/+14
|\ \ | |/ |/| Add support for sending multiline messages
| * Add support for sending multiline messagesTrygve Aaberge2017-09-051-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While weechat plugins like multiline.pl and edit.py allow you to compose multiline messages, wee-slack normally receives them line by line, so it ends up as separate messages. There isn't any direct support for receiving the complete message from weechat, but it can be done with sort of a workaround. There is a callback you can hook on to which allows you to intercept and edit messages before they are sent to the buffer. This callback receives the complete message with all the lines. By using this we can process the whole message, and return an empty string from the callback which means that the message will not be processed further. Note that when this happens, weechat commands are not processed, which is why we only use the callback for messages that contain a newline and does not start with slash. Otherwise, we are returning the string sent to the callback, which would be the same as the callback not being hooked in. I've also opened a PR in weechat for supporting multiline input properly[0]. If that is merged, that can be used for newer weechat versions instead of this. [0]: https://github.com/weechat/weechat/pull/1063 Fixes #118
* | Merge pull request #387 from dbarrosop/unwrap_attachmentsTrygve Aaberge2017-09-201-7/+9
|\ \ | | | | | | When expanding attachments avoid rendering same link multiple times
| * | When unfurling attachments avoid rendering same link multiple timesDavid Barroso2017-09-201-7/+9
| | |
* | | Merge pull request #436 from trygveaa/update-weemoji-listTrygve Aaberge2017-09-191-1/+1348
|\ \ \ | | | | | | | | Update list of emoji completions
| * | | Update list of emojisTrygve Aaberge2017-09-161-0/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was done using the following command. It is not an API call and pretty fragile to changes, so we can't use it to automatically load the list from wee_slack.py. curl -s 'https://cfr.slack-edge.com/bv1-1/emoji.84b5140d201ea94c81b4.min.js' | \ sed -e 's/.*emoji.prototype.data = \({[^}]*}\).*/\1/' \ -e 's/\\n/\n/g' -e 's/\\t/\t/g' -e 's/\\'/'/g' | \ jq '{emoji: [to_entries | .[].value[3]] | flatten | sort}'
| * | | Sort and format weemoji.jsonTrygve Aaberge2017-09-161-1/+1304
| | |/ | |/| | | | | | | This makes it easier to see what is changed when we update the list.
* | | Merge pull request #435 from trygveaa/login-failure-messageTrygve Aaberge2017-09-191-65/+53
|\ \ \ | | | | | | | | Print error message when initial connection fails
| * | | Remove commented out code in handle_rtmstartTrygve Aaberge2017-09-181-15/+0
| | | | | | | | | | | | | | | | | | | | No point in keeping commented out code, especially since this code has never been active.
| * | | Return early from handle_rtmstart on failureTrygve Aaberge2017-09-181-68/+68
| | | | | | | | | | | | | | | | This makes the error case a bit clearer and easier to read.
| * | | Print error message when initial connection failsTrygve Aaberge2017-09-161-3/+6
| |/ / | | | | | | | | | | | | | | | | | | I chose to print this instead of using dbg since it's a rather critical error message. Fixes #432
* | | Merge pull request #434 from trygveaa/test/fix-broken-testsTollef Fog Heen2017-09-188-9/+10
|\ \ \ | | | | | | | | Fix broken tests
| * | | test: Remove monkeypatch dependencyTrygve Aaberge2017-09-156-6/+6
| | | | | | | | | | | | | | | | As far as I can see, this isn't used anywhere.
| * | | test: Fix two incorrect test namesTrygve Aaberge2017-09-152-2/+2
| | | |
| * | | test: Empty eventrouter queue when initializing itTrygve Aaberge2017-09-151-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The commit 6718e2f added some more events to the queue when a buffer is created. This made some tests fail as it would process these events instead of the ones added in the tests. Fix it by processing all events in the queue when setting up the eventrouter for the tests.
| * | | test: Make mock_weechat a dependency of realish_eventrouterTrygve Aaberge2017-09-152-2/+2
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | Setting up the eventrouter for the tests involves code that requires the config object to be set, so it has to depend on mock_weechat. This didn't cause a problem when all the tests were run since the first test depends on mock_weechat so it would be set up. However, if you tried to run a single test that depended on realish_eventrouter, but not mock_weechat, it would fail.
* | | Merge pull request #401 from ToxicFrog/toxicfrog/unfurlTrygve Aaberge2017-09-172-21/+19
|\ \ \ | |/ / |/| | Fix overzealous regex in unfurl_refs
| * | test: Add a unfurl test case for messages containing >Trygve Aaberge2017-09-171-0/+4
| | | | | | | | | | | | | | | | | | This tests the bug that was fixed in commit c667bf6, where a message that first has an url and then a > character would try to unfurl everything up to the last >.
| * | test: Fix and enable the tests for unfurl_refsTrygve Aaberge2017-09-171-19/+13
| | |
| * | Fix overzealous regex in unfurl_refsBen Kelly2017-07-221-2/+2
| | | | | | | | | | | | Signed-off-by: Ben Kelly <btk@google.com>
* | | Merge pull request #414 from trygveaa/improve-rendering-of-multiline-editsTollef Fog Heen2017-08-271-8/+39
|\ \ \ | | | | | | | | Improve rendering of changes in multiline messages
| * | | Prevent lines being broken in bare display modeTrygve Aaberge2017-08-121-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you update a line with hdata_update and pass a string containing newlines, the buffer will become a bit broken when bare display mode is activated (alt+l). It seems that the newlines are printed in bare mode, but extra lines are not inserted, so the lines are overlapping with each other. Fixes #306
| * | | Abort modification of message if encountering line without dataTrygve Aaberge2017-07-301-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Not sure if this can happen. The weechat documentation doesn't state that it can, but since the if condition was there, maybe it can. If it can and does happen, abort the modification, which is better than something unexpected happening.
| * | | Improve rendering of changes in multiline messagesTrygve Aaberge2017-07-301-4/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, if a multiline message was edited or reacted to, all of the new message would be crammed into the last line of the already printed message. This change updates each line separately, so if the number of lines in the message doesn't change, the message will still be rendered correctly after edits or reactions. If the number of lines change, the rendering is still improved, however I don't know if it is possible to insert or delete lines in a weechat buffer without re-rendering the whole buffer, so it won't be perfect. If the number of lines of a message decreases after an edit, the extra lines will still be present, but they will be blanked. If the number of lines increases, the first lines will be set as normally, but the last line will contain all of the rest of the lines.
| * | | Set correct id on all the lines of a messageTrygve Aaberge2017-07-291-4/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of only updating the last line printed with the id of the message (ts.minor, set in the date_printed field), update all of the lines that is printed for that message. This is necessary for updating all of the lines on changes, instead of only the last. This will be implemented in the next commit. This assumes that the lines after the first in messages always has an empty prefix, and that the first line of a message always has a prefix. This holds for the messages I have seen (single-line, multi-line as well as me-messages and joins/quits). Other approaches I considered was to count the number of newlines in the message and update the same number of lines, or to check the existing date_printed field of the messages and update the ones that had 10 digits or more (since current timestamps has that, and the slack id currently has 6 digits). However, I dropped them in favor of the prefix solution which seems better.