diff options
Diffstat (limited to 'lib/mattermost/presenter.rb')
-rw-r--r-- | lib/mattermost/presenter.rb | 80 |
1 files changed, 43 insertions, 37 deletions
diff --git a/lib/mattermost/presenter.rb b/lib/mattermost/presenter.rb index d8e3b3805f9..e1502e3f9ba 100644 --- a/lib/mattermost/presenter.rb +++ b/lib/mattermost/presenter.rb @@ -32,53 +32,59 @@ module Mattermost text: "404 not found! GitLab couldn't find what your were looking for! :boom:", } end - end - - attr_reader :result - def initialize(result) - @result = result - end - - def present - if result.respond_to?(:count) - if result.count > 1 - return respond_collection(result) - elsif result.count == 0 - return not_found - else - result = result.first + def present(resource) + return not_found unless resource + + if resource.respond_to?(:count) + if resource.count > 1 + return multiple_resources(resource) + elsif resource.count == 0 + return not_found + else + resource = resource.first + end end + + single_resource(resource) end - single_resource - end + private - private + def single_resource(resource) + message = title(resource) + message << "\n\n#{resource.description}" if resource.description - def single_resource - message = title(resource) - message << "\n\n#{resource.description}" if resource.description + { + response_type: :in_channel, + text: message + } + end - { - response_type: :in_channel, - text: message - } - end + def multiple_resources(resources) + message = "Multiple results were found:\n" + message << resources.map { |resource| " #{title(resource)}" }.join("\n") - def multiple_resources(resources) - message = "Multiple results were found:\n" - message << resource.map { |resource| " #{title(resource)}" }.join("\n") + { + response_type: :ephemeral, + text: message + } + end - { - response_type: :ephemeral, - text: message - } - end + def title(resource) + "### [#{resource.to_reference} #{resource.title}](#{url(resource)})" + end + + def url(resource) + helper = Rails.application.routes.url_helpers - def title(resource) - url = url_for([resource.project.namespace.becomes(Namespace), resource.project, resource]) - "### [#{resource.to_reference} #{resource.title}](#{url})" + case resource + when Issue + helper.namespace_project_issue_url(resource.project.namespace.becomes(Namespace), resource.project, resource) + when MergeRequest + helper.namespace_project_merge_request_url(resource.project.namespace.becomes(Namespace), resource.project, resource) + end + end end end end |