aboutsummaryrefslogtreecommitdiffstats
path: root/slack
diff options
context:
space:
mode:
authorTrygve Aaberge <trygveaa@gmail.com>2023-10-15 18:45:25 +0200
committerTrygve Aaberge <trygveaa@gmail.com>2024-02-18 11:32:54 +0100
commite54d7d3048fae8c4a7ecbfeedf50c11da50a93f2 (patch)
tree8660f10ffb20bf1be0665104f4c2a7a77f667eef /slack
parente66ff9e2e493b46457cc3d2794fcfaec457474d0 (diff)
downloadwee-slack-e54d7d3048fae8c4a7ecbfeedf50c11da50a93f2.tar.gz
Fetch all mentioned users at once in fill_history
Diffstat (limited to 'slack')
-rw-r--r--slack/slack_conversation.py25
-rw-r--r--slack/slack_message.py6
2 files changed, 23 insertions, 8 deletions
diff --git a/slack/slack_conversation.py b/slack/slack_conversation.py
index f9c36d5..d16655a 100644
--- a/slack/slack_conversation.py
+++ b/slack/slack_conversation.py
@@ -11,7 +11,12 @@ from slack.log import print_exception_once
from slack.python_compatibility import removeprefix
from slack.shared import shared
from slack.slack_buffer import SlackBuffer
-from slack.slack_message import MessagePriority, SlackMessage, SlackTs
+from slack.slack_message import (
+ MessagePriority,
+ PendingMessageItem,
+ SlackMessage,
+ SlackTs,
+)
from slack.slack_thread import SlackThread
from slack.slack_user import SlackBot, SlackUser, nick_color
from slack.task import gather, run_async
@@ -414,7 +419,7 @@ class SlackConversation(SlackBuffer):
or message.ts > self.last_printed_ts
]
- sender_user_ids = [m.sender_user_id for m in messages if m.sender_user_id]
+ user_ids = [m.sender_user_id for m in messages if m.sender_user_id]
if self.display_reaction_nicks():
reaction_user_ids = [
user_id
@@ -422,9 +427,19 @@ class SlackConversation(SlackBuffer):
for reaction in m.reactions
for user_id in reaction["users"]
]
- user_ids = sender_user_ids + reaction_user_ids
- else:
- user_ids = sender_user_ids
+ user_ids.extend(reaction_user_ids)
+
+ parsed_messages = [
+ item for m in messages for item in m.parse_message_text()
+ ]
+ pending_items = [
+ item for item in parsed_messages if isinstance(item, PendingMessageItem)
+ ]
+ item_user_ids = [
+ item.item_id for item in pending_items if item.item_type == "user"
+ ]
+ user_ids.extend(item_user_ids)
+
self.workspace.users.initialize_items(user_ids)
sender_bot_ids = [
diff --git a/slack/slack_message.py b/slack/slack_message.py
index 5425916..4a45151 100644
--- a/slack/slack_message.py
+++ b/slack/slack_message.py
@@ -485,7 +485,7 @@ class SlackMessage:
def should_highlight(self, only_personal: bool) -> bool:
# TODO: Highlight words from user preferences
- parsed_message = self._parse_message_text()
+ parsed_message = self.parse_message_text()
for item in parsed_message:
if isinstance(item, PendingMessageItem) and item.should_highlight(
@@ -586,7 +586,7 @@ class SlackMessage:
self._rendered_prefix = await self._render_prefix()
return self._rendered_prefix
- def _parse_message_text(
+ def parse_message_text(
self, update: bool = False
) -> List[Union[str, PendingMessageItem]]:
if self._parsed_message is not None and not update:
@@ -680,7 +680,7 @@ class SlackMessage:
else ""
)
- parsed_message = self._parse_message_text(rerender)
+ parsed_message = self.parse_message_text(rerender)
text = "".join(
[
text if isinstance(text, str) else await text.resolve()