diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-11-29 18:06:43 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-11-29 18:06:43 +0300 |
commit | eac0da9a47f0c7b8b970833d7d5b96cfee057bf7 (patch) | |
tree | 7b7865053435c6dcb4e2d945fcf45e309331c91b /lib/gitlab/slash_commands | |
parent | b860c6ba2607541e3b5bdf0fc2daaa9ed41a8726 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/slash_commands')
-rw-r--r-- | lib/gitlab/slash_commands/presenters/access.rb | 4 | ||||
-rw-r--r-- | lib/gitlab/slash_commands/presenters/base.rb | 47 | ||||
-rw-r--r-- | lib/gitlab/slash_commands/presenters/issue_base.rb | 10 | ||||
-rw-r--r-- | lib/gitlab/slash_commands/presenters/issue_close.rb | 32 | ||||
-rw-r--r-- | lib/gitlab/slash_commands/presenters/issue_comment.rb | 24 | ||||
-rw-r--r-- | lib/gitlab/slash_commands/presenters/issue_move.rb | 29 | ||||
-rw-r--r-- | lib/gitlab/slash_commands/presenters/issue_new.rb | 31 | ||||
-rw-r--r-- | lib/gitlab/slash_commands/presenters/issue_search.rb | 10 | ||||
-rw-r--r-- | lib/gitlab/slash_commands/presenters/issue_show.rb | 41 | ||||
-rw-r--r-- | lib/gitlab/slash_commands/presenters/note_base.rb | 10 |
10 files changed, 90 insertions, 148 deletions
diff --git a/lib/gitlab/slash_commands/presenters/access.rb b/lib/gitlab/slash_commands/presenters/access.rb index fbc3cf2e049..c9c5c6da3bf 100644 --- a/lib/gitlab/slash_commands/presenters/access.rb +++ b/lib/gitlab/slash_commands/presenters/access.rb @@ -34,8 +34,8 @@ module Gitlab def authorize message = - if @resource - ":wave: Hi there! Before I do anything for you, please [connect your GitLab account](#{@resource})." + if resource + ":wave: Hi there! Before I do anything for you, please [connect your GitLab account](#{resource})." else ":sweat_smile: Couldn't identify you, nor can I authorize you!" end diff --git a/lib/gitlab/slash_commands/presenters/base.rb b/lib/gitlab/slash_commands/presenters/base.rb index 73814aa180f..54d74ed3998 100644 --- a/lib/gitlab/slash_commands/presenters/base.rb +++ b/lib/gitlab/slash_commands/presenters/base.rb @@ -18,6 +18,8 @@ module Gitlab private + attr_reader :resource + def header_with_list(header, items) message = [header] @@ -67,12 +69,51 @@ module Gitlab def resource_url url_for( [ - @resource.project.namespace.becomes(Namespace), - @resource.project, - @resource + resource.project.namespace.becomes(Namespace), + resource.project, + resource ] ) end + + def project_link + "[#{project.full_name}](#{project.web_url})" + end + + def author_profile_link + "[#{author.to_reference}](#{url_for(author)})" + end + + def response_message(custom_pretext: pretext) + { + attachments: [ + { + title: "#{issue.title} · #{issue.to_reference}", + title_link: resource_url, + author_name: author.name, + author_icon: author.avatar_url, + fallback: fallback_message, + pretext: custom_pretext, + text: text, + color: color(resource), + fields: fields, + mrkdwn_in: fields_with_markdown + } + ] + } + end + + def pretext + '' + end + + def text + '' + end + + def fields_with_markdown + %i(title pretext fields) + end end end end diff --git a/lib/gitlab/slash_commands/presenters/issue_base.rb b/lib/gitlab/slash_commands/presenters/issue_base.rb index 0be31e234b5..4bc05d1f318 100644 --- a/lib/gitlab/slash_commands/presenters/issue_base.rb +++ b/lib/gitlab/slash_commands/presenters/issue_base.rb @@ -42,17 +42,11 @@ module Gitlab ] end - def project_link - "[#{project.full_name}](#{project.web_url})" - end - - def author_profile_link - "[#{author.to_reference}](#{url_for(author)})" - end - private attr_reader :resource + + alias_method :issue, :resource end end end diff --git a/lib/gitlab/slash_commands/presenters/issue_close.rb b/lib/gitlab/slash_commands/presenters/issue_close.rb index b3f24f4296a..f8d9af2c3c6 100644 --- a/lib/gitlab/slash_commands/presenters/issue_close.rb +++ b/lib/gitlab/slash_commands/presenters/issue_close.rb @@ -7,43 +7,25 @@ module Gitlab include Presenters::IssueBase def present - if @resource.confidential? - ephemeral_response(close_issue) + if resource.confidential? + ephemeral_response(response_message) else - in_channel_response(close_issue) + in_channel_response(response_message) end end def already_closed - ephemeral_response(text: "Issue #{@resource.to_reference} is already closed.") + ephemeral_response(text: "Issue #{resource.to_reference} is already closed.") end private - def close_issue - { - attachments: [ - { - title: "#{@resource.title} · #{@resource.to_reference}", - title_link: resource_url, - author_name: author.name, - author_icon: author.avatar_url, - fallback: "Closed issue #{@resource.to_reference}: #{@resource.title}", - pretext: pretext, - color: color(@resource), - fields: fields, - mrkdwn_in: [ - :title, - :pretext, - :fields - ] - } - ] - } + def fallback_message + "Closed issue #{issue.to_reference}: #{issue.title}" end def pretext - "I closed an issue on #{author_profile_link}'s behalf: *#{@resource.to_reference}* in #{project_link}" + "I closed an issue on #{author_profile_link}'s behalf: *#{issue.to_reference}* in #{project_link}" end end end diff --git a/lib/gitlab/slash_commands/presenters/issue_comment.rb b/lib/gitlab/slash_commands/presenters/issue_comment.rb index cce71e23b21..6ad56dd3682 100644 --- a/lib/gitlab/slash_commands/presenters/issue_comment.rb +++ b/lib/gitlab/slash_commands/presenters/issue_comment.rb @@ -7,31 +7,13 @@ module Gitlab include Presenters::NoteBase def present - ephemeral_response(new_note) + ephemeral_response(response_message) end private - def new_note - { - attachments: [ - { - title: "#{issue.title} · #{issue.to_reference}", - title_link: resource_url, - author_name: author.name, - author_icon: author.avatar_url, - fallback: "New comment on #{issue.to_reference}: #{issue.title}", - pretext: pretext, - color: color, - fields: fields, - mrkdwn_in: [ - :title, - :pretext, - :fields - ] - } - ] - } + def fallback_message + "New comment on #{issue.to_reference}: #{issue.title}" end def pretext diff --git a/lib/gitlab/slash_commands/presenters/issue_move.rb b/lib/gitlab/slash_commands/presenters/issue_move.rb index 01f2025ee10..5b9ca89c063 100644 --- a/lib/gitlab/slash_commands/presenters/issue_move.rb +++ b/lib/gitlab/slash_commands/presenters/issue_move.rb @@ -19,30 +19,15 @@ module Gitlab private def moved_issue(old_issue) - { - attachments: [ - { - title: "#{@resource.title} · #{@resource.to_reference}", - title_link: resource_url, - author_name: author.name, - author_icon: author.avatar_url, - fallback: "Issue #{@resource.to_reference}: #{@resource.title}", - pretext: pretext(old_issue), - color: color(@resource), - fields: fields, - mrkdwn_in: [ - :title, - :pretext, - :text, - :fields - ] - } - ] - } + response_message(custom_pretext: custom_pretext(old_issue)) end - def pretext(old_issue) - "Moved issue *#{issue_link(old_issue)}* to *#{issue_link(@resource)}*" + def fallback_message + "Issue #{issue.to_reference}: #{issue.title}" + end + + def custom_pretext(old_issue) + "Moved issue *#{issue_link(old_issue)}* to *#{issue_link(issue)}*" end def issue_link(issue) diff --git a/lib/gitlab/slash_commands/presenters/issue_new.rb b/lib/gitlab/slash_commands/presenters/issue_new.rb index 1424a4ac381..552456f5836 100644 --- a/lib/gitlab/slash_commands/presenters/issue_new.rb +++ b/lib/gitlab/slash_commands/presenters/issue_new.rb @@ -7,36 +7,21 @@ module Gitlab include Presenters::IssueBase def present - in_channel_response(new_issue) + in_channel_response(response_message) end private - def new_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, - :pretext, - :text, - :fields - ] - } - ] - } + def fallback_message + "New issue #{issue.to_reference}: #{issue.title}" + end + + def fields_with_markdown + %i(title pretext text fields) end def pretext - "I created an issue on #{author_profile_link}'s behalf: *#{@resource.to_reference}* in #{project_link}" + "I created an issue on #{author_profile_link}'s behalf: *#{issue.to_reference}* in #{project_link}" end end end diff --git a/lib/gitlab/slash_commands/presenters/issue_search.rb b/lib/gitlab/slash_commands/presenters/issue_search.rb index 0d497efec0e..fffa082baac 100644 --- a/lib/gitlab/slash_commands/presenters/issue_search.rb +++ b/lib/gitlab/slash_commands/presenters/issue_search.rb @@ -7,12 +7,12 @@ module Gitlab include Presenters::IssueBase def present - text = if @resource.count >= 5 + text = if resource.count >= 5 "Here are the first 5 issues I found:" - elsif @resource.one? + elsif resource.one? "Here is the only issue I found:" else - "Here are the #{@resource.count} issues I found:" + "Here are the #{resource.count} issues I found:" end ephemeral_response(text: text, attachments: attachments) @@ -21,7 +21,7 @@ module Gitlab private def attachments - @resource.map do |issue| + resource.map do |issue| url = "[#{issue.to_reference}](#{url_for([namespace, project, issue])})" { @@ -37,7 +37,7 @@ module Gitlab end def project - @project ||= @resource.first.project + @project ||= resource.first.project end def namespace diff --git a/lib/gitlab/slash_commands/presenters/issue_show.rb b/lib/gitlab/slash_commands/presenters/issue_show.rb index 5a2c79a928e..448381b64ed 100644 --- a/lib/gitlab/slash_commands/presenters/issue_show.rb +++ b/lib/gitlab/slash_commands/presenters/issue_show.rb @@ -7,55 +7,36 @@ module Gitlab include Presenters::IssueBase def present - if @resource.confidential? - ephemeral_response(show_issue) + if resource.confidential? + ephemeral_response(response_message) else - in_channel_response(show_issue) + in_channel_response(response_message) end 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: "Issue #{@resource.to_reference}: #{@resource.title}", - pretext: pretext, - text: text, - color: color(@resource), - fields: fields, - mrkdwn_in: [ - :pretext, - :text, - :fields - ] - } - ] - } + def fallback_message + "Issue #{resource.to_reference}: #{resource.title}" end def text - message = ["**#{status_text(@resource)}**"] + message = ["**#{status_text(resource)}**"] - if @resource.upvotes.zero? && @resource.downvotes.zero? && @resource.user_notes_count.zero? + 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 << ":+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}" + "Issue *#{resource.to_reference}* from #{project.full_name}" end end end diff --git a/lib/gitlab/slash_commands/presenters/note_base.rb b/lib/gitlab/slash_commands/presenters/note_base.rb index 7758fc740de..71a9b99d0fd 100644 --- a/lib/gitlab/slash_commands/presenters/note_base.rb +++ b/lib/gitlab/slash_commands/presenters/note_base.rb @@ -6,7 +6,7 @@ module Gitlab module NoteBase GREEN = '#38ae67' - def color + def color(_) GREEN end @@ -18,18 +18,10 @@ module Gitlab issue.project end - def project_link - "[#{project.full_name}](#{project.web_url})" - end - def author resource.author end - def author_profile_link - "[#{author.to_reference}](#{url_for(author)})" - end - def fields [ { |