Skip to content

Commit b8b5cff

Browse files
committed
Only respond in a thread for same room destination
1 parent f0994ce commit b8b5cff

File tree

3 files changed

+6
-5
lines changed

3 files changed

+6
-5
lines changed

lib/cog/chat/message_metadata.ex

+1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ defmodule Cog.Chat.MessageMetadata do
22
use Conduit
33

44
field :thread_id, :string, required: false
5+
field :originating_room_id, :string, required: false
56
end

lib/cog/chat/slack/connector.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ defmodule Cog.Chat.Slack.Connector do
301301
else
302302
{:chat_message, %Message{id: Cog.Events.Util.unique_id, room: room,
303303
user: user, text: text, provider: @provider_name,
304-
metadata: %MessageMetadata{thread_id: ts},
304+
metadata: %MessageMetadata{thread_id: ts, originating_room_id: room.id},
305305
bot_name: "@#{state.me.name}", edited: false}}
306306
end
307307
end

lib/cog/chat/slack/provider.ex

+4-4
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ defmodule Cog.Chat.Slack.Provider do
109109
end
110110
# Old template processing
111111
def handle_call({:send_message, target, message, metadata}, _from, %__MODULE__{connector: connector, token: token}=state) when is_binary(message) do
112-
metadata = maybe_remove_thread_id(metadata, state.enable_threaded_response)
112+
metadata = maybe_remove_thread_id(metadata, state.enable_threaded_response, target)
113113
result = Connector.call(connector, token, :send_message, %{target: target, message: message, metadata: metadata})
114114
case result["ok"] do
115115
true ->
@@ -121,7 +121,7 @@ defmodule Cog.Chat.Slack.Provider do
121121
# New template processing
122122
def handle_call({:send_message, target, message, metadata}, _from, %__MODULE__{connector: connector, token: token}=state) do
123123
{text, attachments} = SlackRenderer.render(message)
124-
metadata = maybe_remove_thread_id(metadata, state.enable_threaded_response)
124+
metadata = maybe_remove_thread_id(metadata, state.enable_threaded_response, target)
125125
result = Connector.call(connector, token, :send_message, %{target: target, message: text, metadata: metadata, attachments: attachments})
126126
case result["ok"] do
127127
true ->
@@ -140,8 +140,8 @@ defmodule Cog.Chat.Slack.Provider do
140140
{:noreply, state}
141141
end
142142

143-
defp maybe_remove_thread_id(metadata, true),
143+
defp maybe_remove_thread_id(%Cog.Chat.MessageMetadata{originating_room_id: target_room_id} = metadata, true, target_room_id),
144144
do: metadata
145-
defp maybe_remove_thread_id(metadata, _),
145+
defp maybe_remove_thread_id(metadata, _disabled, _taget_room_id),
146146
do: %{metadata | thread_id: nil}
147147
end

0 commit comments

Comments
 (0)