f93f8f569d
Enables frozen string for the following: * lib/gitlab/patch/**/*.rb * lib/gitlab/popen/**/*.rb * lib/gitlab/profiler/**/*.rb * lib/gitlab/project_authorizations/**/*.rb * lib/gitlab/prometheus/**/*.rb * lib/gitlab/query_limiting/**/*.rb * lib/gitlab/quick_actions/**/*.rb * lib/gitlab/redis/**/*.rb * lib/gitlab/request_profiler/**/*.rb * lib/gitlab/search/**/*.rb * lib/gitlab/sherlock/**/*.rb * lib/gitlab/sidekiq_middleware/**/*.rb * lib/gitlab/slash_commands/**/*.rb * lib/gitlab/sql/**/*.rb * lib/gitlab/template/**/*.rb * lib/gitlab/testing/**/*.rb * lib/gitlab/utils/**/*.rb * lib/gitlab/webpack/**/*.rb Partially addresses gitlab-org/gitlab-ce#47424.
49 lines
1.2 KiB
Ruby
49 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module SlashCommands
|
|
module Presenters
|
|
class IssueSearch < Presenters::Base
|
|
include Presenters::IssueBase
|
|
|
|
def present
|
|
text = if @resource.count >= 5
|
|
"Here are the first 5 issues I found:"
|
|
elsif @resource.one?
|
|
"Here is the only issue I found:"
|
|
else
|
|
"Here are the #{@resource.count} issues I found:"
|
|
end
|
|
|
|
ephemeral_response(text: text, attachments: attachments)
|
|
end
|
|
|
|
private
|
|
|
|
def attachments
|
|
@resource.map do |issue|
|
|
url = "[#{issue.to_reference}](#{url_for([namespace, project, issue])})"
|
|
|
|
{
|
|
color: color(issue),
|
|
fallback: "#{issue.to_reference} #{issue.title}",
|
|
text: "#{url} · #{issue.title} (#{status_text(issue)})",
|
|
|
|
mrkdwn_in: [
|
|
:text
|
|
]
|
|
}
|
|
end
|
|
end
|
|
|
|
def project
|
|
@project ||= @resource.first.project
|
|
end
|
|
|
|
def namespace
|
|
@namespace ||= project.namespace.becomes(Namespace)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|