aboutsummaryrefslogtreecommitdiffstats
path: root/slack/slack_conversation.py
diff options
context:
space:
mode:
authorTrygve Aaberge <trygveaa@gmail.com>2023-01-19 23:05:25 +0100
committerTrygve Aaberge <trygveaa@gmail.com>2024-02-18 11:32:53 +0100
commitd2bb9263f0062275b92024ccdba68d5439521b5d (patch)
treedd9b46727d5a3fc8e1b1c232419504772305e928 /slack/slack_conversation.py
parentd6b4f505d53e69ecb39d518a89d8d0013e22ad51 (diff)
downloadwee-slack-d2bb9263f0062275b92024ccdba68d5439521b5d.tar.gz
Add support for completing nicks
This uses Slacks edgeapi which only works for session tokens, but has the benefit of being able to complete nicks without all users being loaded. So need to add some completion for the loaded users for when using OAuth tokens as well.
Diffstat (limited to 'slack/slack_conversation.py')
-rw-r--r--slack/slack_conversation.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/slack/slack_conversation.py b/slack/slack_conversation.py
index 8fb1c0e..647d0fe 100644
--- a/slack/slack_conversation.py
+++ b/slack/slack_conversation.py
@@ -2,7 +2,7 @@ from __future__ import annotations
import time
from contextlib import contextmanager
-from typing import TYPE_CHECKING, Optional
+from typing import TYPE_CHECKING, List, Optional
import weechat
@@ -37,6 +37,12 @@ class SlackConversation:
self.history_filled = False
self.history_pending = False
+ self.is_completing = False
+ self.completion_context = 0
+ self.completion_query: Optional[str] = None
+ self.completion_values: List[str] = []
+ self.completion_index = 0
+
@property
def _api(self) -> SlackApi:
return self.workspace.api
@@ -51,6 +57,14 @@ class SlackConversation:
self.is_loading = False
weechat.bar_item_update("input_text")
+ @contextmanager
+ def completing(self):
+ self.is_completing = True
+ try:
+ yield
+ finally:
+ self.is_completing = False
+
async def init(self):
with self.loading():
info = await self._api.fetch_conversations_info(self)