chore: Update conversation thread rendering in Slack (#6812)

This commit is contained in:
Pranav Raj S
2023-04-02 22:26:08 -07:00
committed by GitHub
parent 44e4eee28b
commit ebc144683a
2 changed files with 31 additions and 18 deletions

View File

@@ -38,10 +38,12 @@ class Integrations::Slack::SendOnSlackService < Base::SendOnChannelService
def message_content
private_indicator = message.private? ? 'private: ' : ''
sanitized_content = ActionView::Base.full_sanitizer.sanitize(message_text)
if conversation.identifier.present?
"#{private_indicator}#{message_text}"
"#{private_indicator}#{sanitized_content}"
else
"#{formatted_inbox_name}#{formatted_conversation_link}#{email_subject_line}\n#{message_text}"
"#{formatted_inbox_name}#{formatted_conversation_link}#{email_subject_line}\n#{sanitized_content}"
end
end
@@ -58,7 +60,7 @@ class Integrations::Slack::SendOnSlackService < Base::SendOnChannelService
end
def formatted_conversation_link
"*Conversation:* #{link_to_conversation}\n"
"#{link_to_conversation} to view the conversation.\n"
end
def email_subject_line
@@ -87,10 +89,11 @@ class Integrations::Slack::SendOnSlackService < Base::SendOnChannelService
def post_message
@slack_message = slack_client.chat_postMessage(
channel: hook.reference_id,
text: ActionView::Base.full_sanitizer.sanitize(message_content),
text: message_content,
username: sender_name(message.sender),
thread_ts: conversation.identifier,
icon_url: avatar_url(message.sender)
icon_url: avatar_url(message.sender),
unfurl_links: conversation.identifier.present?
)
end
@@ -141,6 +144,6 @@ class Integrations::Slack::SendOnSlackService < Base::SendOnChannelService
end
def link_to_conversation
"#{ENV.fetch('FRONTEND_URL', nil)}/app/accounts/#{conversation.account_id}/conversations/#{conversation.display_id}"
"<#{ENV.fetch('FRONTEND_URL', nil)}/app/accounts/#{conversation.account_id}/conversations/#{conversation.display_id}|Click here>"
end
end

View File

@@ -18,7 +18,9 @@ describe Integrations::Slack::SendOnSlackService do
let(:slack_message_content) { double }
let(:slack_client) { double }
let(:builder) { described_class.new(message: message, hook: hook) }
let(:conversation_link) { "#{ENV.fetch('FRONTEND_URL', nil)}/app/accounts/#{account.id}/conversations/#{conversation.display_id}" }
let(:conversation_link) do
"<#{ENV.fetch('FRONTEND_URL', nil)}/app/accounts/#{account.id}/conversations/#{conversation.display_id}|Click here> to view the conversation."
end
before do
allow(builder).to receive(:slack_client).and_return(slack_client)
@@ -34,10 +36,11 @@ describe Integrations::Slack::SendOnSlackService do
expect(slack_client).to receive(:chat_postMessage).with(
channel: hook.reference_id,
text: "\n*Inbox:* #{inbox.name} (#{inbox.inbox_type})\n*Conversation:* #{conversation_link}\n\n#{message.content}",
text: "\n*Inbox:* #{inbox.name} (#{inbox.inbox_type})\n#{conversation_link}\n\n#{message.content}",
username: "#{message.sender.name} (Contact)",
thread_ts: nil,
icon_url: anything
icon_url: anything,
unfurl_links: false
).and_return(slack_message)
builder.perform
@@ -59,11 +62,12 @@ describe Integrations::Slack::SendOnSlackService do
expect(slack_client).to receive(:chat_postMessage).with(
channel: hook.reference_id,
text: "\n*Inbox:* #{inbox.name} (#{inbox.inbox_type})\n*Conversation:* #{conversation_link}\n" \
text: "\n*Inbox:* #{inbox.name} (#{inbox.inbox_type})\n#{conversation_link}\n" \
"*Subject:* Sample subject line\n\n\n#{message.content}",
username: "#{message.sender.name} (Contact)",
thread_ts: nil,
icon_url: anything
icon_url: anything,
unfurl_links: false
).and_return(slack_message)
builder.perform
@@ -84,7 +88,8 @@ describe Integrations::Slack::SendOnSlackService do
text: message.content,
username: "#{message.sender.name} (Contact)",
thread_ts: conversation.identifier,
icon_url: anything
icon_url: anything,
unfurl_links: true
).and_return(slack_message)
builder.perform
@@ -98,7 +103,8 @@ describe Integrations::Slack::SendOnSlackService do
text: message.content,
username: "#{message.sender.name} (Contact)",
thread_ts: conversation.identifier,
icon_url: anything
icon_url: anything,
unfurl_links: true
).and_return(slack_message)
attachment = message.attachments.new(account_id: message.account_id, file_type: :image)
@@ -131,7 +137,8 @@ describe Integrations::Slack::SendOnSlackService do
text: template_message.content,
username: "#{template_message.sender.name} (Contact)",
thread_ts: conversation.identifier,
icon_url: anything
icon_url: anything,
unfurl_links: true
).and_return(slack_message)
builder.perform
@@ -145,7 +152,8 @@ describe Integrations::Slack::SendOnSlackService do
text: message.content,
username: "#{message.sender.name} (Contact)",
thread_ts: conversation.identifier,
icon_url: anything
icon_url: anything,
unfurl_links: true
).and_raise(Slack::Web::Api::Errors::AccountInactive.new('Account disconnected'))
allow(hook).to receive(:authorization_error!)
@@ -164,10 +172,11 @@ describe Integrations::Slack::SendOnSlackService do
expect(slack_client).to receive(:chat_postMessage).with(
channel: hook.reference_id,
text: "\n*Inbox:* #{inbox.name} (#{inbox.inbox_type})\n*Conversation:* #{conversation_link}\n\n#{formatted_message_text}",
text: "\n*Inbox:* #{inbox.name} (#{inbox.inbox_type})\n#{conversation_link}\n\n#{formatted_message_text}",
username: "#{message.sender.name} (Contact)",
thread_ts: nil,
icon_url: anything
icon_url: anything,
unfurl_links: false
).and_return(slack_message)
builder.perform
@@ -183,7 +192,8 @@ describe Integrations::Slack::SendOnSlackService do
text: formatted_message_text,
username: "#{message.sender.name} (Contact)",
thread_ts: 'random_slack_thread_ts',
icon_url: anything
icon_url: anything,
unfurl_links: true
).and_return(slack_message)
builder.perform