gitlab-org--gitlab-foss/lib/gitlab/slash_commands/presenters/issue_show.rb

62 lines
1.7 KiB
Ruby
Raw Normal View History

2017-01-19 08:22:09 +00:00
module Gitlab
module SlashCommands
2017-01-19 08:22:09 +00:00
module Presenters
2017-01-26 14:30:34 +00:00
class IssueShow < Presenters::Base
include Presenters::IssueBase
2017-01-26 14:30:34 +00:00
2017-01-19 08:22:09 +00:00
def present
2017-01-30 11:12:57 +00:00
if @resource.confidential?
ephemeral_response(show_issue)
else
in_channel_response(show_issue)
end
2017-01-19 08:22:09 +00:00
end
2017-01-19 08:22:09 +00:00
private
2017-01-19 08:22:09 +00:00
def show_issue
{
2017-01-19 08:22:09 +00:00
attachments: [
{
title: "#{@resource.title} · #{@resource.to_reference}",
title_link: resource_url,
author_name: author.name,
author_icon: author.avatar_url,
2017-01-26 14:30:34 +00:00
fallback: "Issue #{@resource.to_reference}: #{@resource.title}",
2017-01-19 08:22:09 +00:00
pretext: pretext,
text: text,
color: color(@resource),
fields: fields,
mrkdwn_in: [
:pretext,
2017-01-30 11:12:57 +00:00
:text,
:fields
2017-01-19 08:22:09 +00:00
]
}
]
}
2017-01-19 08:22:09 +00:00
end
def text
message = "**#{status_text(@resource)}**"
if @resource.upvotes.zero? && @resource.downvotes.zero? && @resource.user_notes_count.zero?
return message
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?
2017-01-19 08:22:09 +00:00
message
end
2017-01-19 08:22:09 +00:00
def pretext
2017-01-30 11:12:57 +00:00
"Issue *#{@resource.to_reference}* from #{project.name_with_namespace}"
2017-01-19 08:22:09 +00:00
end
end
end
end
end