summaryrefslogtreecommitdiff
path: root/lib/gitlab/slash_commands/presenters/issue_show.rb
blob: 448381b64ed8776cb2c597835669d0e30f36b40d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# frozen_string_literal: true

module Gitlab
  module SlashCommands
    module Presenters
      class IssueShow < Presenters::Base
        include Presenters::IssueBase

        def present
          if resource.confidential?
            ephemeral_response(response_message)
          else
            in_channel_response(response_message)
          end
        end

        private

        def fallback_message
          "Issue #{resource.to_reference}: #{resource.title}"
        end

        def text
          message = ["**#{status_text(resource)}**"]

          if resource.upvotes.zero? && resource.downvotes.zero? && resource.user_notes_count.zero?
            return message.join
          end

          message << " ยท "
          message << ":+1: #{resource.upvotes} " unless resource.upvotes.zero?
          message << ":-1: #{resource.downvotes} " unless resource.downvotes.zero?
          message << ":speech_balloon: #{resource.user_notes_count}" unless resource.user_notes_count.zero?

          message.join
        end

        def pretext
          "Issue *#{resource.to_reference}* from #{project.full_name}"
        end
      end
    end
  end
end