From 6ed0deedf8bc556af504587054f4a2e3820fd70a Mon Sep 17 00:00:00 2001 From: David Taylor Date: Mon, 27 Nov 2017 08:07:25 +0000 Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20load=20responses=20to=20threads?= =?UTF-8?q?=20(#14)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Don’t load responses to threads * Add test case for ignoring threaded messages * Appease rubocop --- lib/discourse_chat/provider/slack/slack_transcript.rb | 4 ++++ .../provider/slack/slack_transcript_spec.rb | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/lib/discourse_chat/provider/slack/slack_transcript.rb b/lib/discourse_chat/provider/slack/slack_transcript.rb index 155baf0..f33d884 100644 --- a/lib/discourse_chat/provider/slack/slack_transcript.rb +++ b/lib/discourse_chat/provider/slack/slack_transcript.rb @@ -220,7 +220,11 @@ module DiscourseChat::Provider::SlackProvider # Build some message objects @messages = [] raw_messages.each_with_index do |message, index| + # Only load messages next unless message["type"] == "message" + # Don't load responses to threads (if ts==thread_ts then it's the thread parent) + next if message["thread_ts"] && message["thread_ts"] != message["ts"] + this_message = SlackMessage.new(message, self) @messages << this_message end diff --git a/spec/lib/discourse_chat/provider/slack/slack_transcript_spec.rb b/spec/lib/discourse_chat/provider/slack/slack_transcript_spec.rb index 3492210..063128a 100644 --- a/spec/lib/discourse_chat/provider/slack/slack_transcript_spec.rb +++ b/spec/lib/discourse_chat/provider/slack/slack_transcript_spec.rb @@ -28,6 +28,13 @@ RSpec.describe DiscourseChat::Provider::SlackProvider::SlackTranscript do "text": "So, who's interested in the new ?", "ts": "1501801629.052212" }, + { + "type": "message", + "user": "U6E2W7R8C", + "text": "I'm interested!!", + "ts": "1501801634.053761", + "thread_ts": "1501801629.052212" + }, { "text": "", "username": "Test Community", @@ -128,6 +135,10 @@ RSpec.describe DiscourseChat::Provider::SlackProvider::SlackTranscript do transcript.load_chat_history end + it 'ignores messages in a thread' do + expect(transcript.messages.length).to eq(6) + end + it 'loads in chronological order' do # API presents in reverse chronological expect(transcript.messages.first.ts).to eq('1501093331.439776') end