summaryrefslogtreecommitdiff
path: root/lib/gitlab/chat_commands/presenters/new_issue.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/chat_commands/presenters/new_issue.rb')
-rw-r--r--lib/gitlab/chat_commands/presenters/new_issue.rb42
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/gitlab/chat_commands/presenters/new_issue.rb b/lib/gitlab/chat_commands/presenters/new_issue.rb
new file mode 100644
index 00000000000..c7c6febb56e
--- /dev/null
+++ b/lib/gitlab/chat_commands/presenters/new_issue.rb
@@ -0,0 +1,42 @@
+module Gitlab
+ module ChatCommands
+ module Presenters
+ class NewIssue < Presenters::Issuable
+ def present
+ in_channel_response(show_issue)
+ end
+
+ private
+
+ def show_issue
+ {
+ attachments: [
+ {
+ title: "#{@resource.title} ยท #{@resource.to_reference}",
+ title_link: resource_url,
+ author_name: author.name,
+ author_icon: author.avatar_url,
+ fallback: "New issue #{@resource.to_reference}: #{@resource.title}",
+ pretext: pretext,
+ color: color(@resource),
+ fields: fields,
+ mrkdwn_in: [
+ :title,
+ :text
+ ]
+ }
+ ]
+ }
+ end
+
+ def pretext
+ "I opened an issue on behalf on #{author_profile_link}: *#{@resource.to_reference}* from #{project.name_with_namespace}"
+ end
+
+ def author_profile_link
+ "[#{author.to_reference}](#{url_for(author)})"
+ end
+ end
+ end
+ end
+end