diff options
Diffstat (limited to 'app/services/mattermost/commands')
8 files changed, 27 insertions, 33 deletions
diff --git a/app/services/mattermost/commands/base_service.rb b/app/services/mattermost/commands/base_service.rb index 16bb92b9d0d..c6bfd7c9ab4 100644 --- a/app/services/mattermost/commands/base_service.rb +++ b/app/services/mattermost/commands/base_service.rb @@ -17,13 +17,17 @@ module Mattermost private - def find_by_iid(iid) + def present(resource) + Mattermost::Presenter.present(resource) + end + + def find_by_iid resource = collection.find_by(iid: iid) readable?(resource) ? resource : nil end - def search + def search_results collection.search(query).limit(QUERY_LIMIT).select do |resource| readable?(resource) end diff --git a/app/services/mattermost/commands/issue_create_service.rb b/app/services/mattermost/commands/issue_create_service.rb index e52dad6f532..db3f868fc09 100644 --- a/app/services/mattermost/commands/issue_create_service.rb +++ b/app/services/mattermost/commands/issue_create_service.rb @@ -1,12 +1,20 @@ module Mattermost module Commands - class IssueShowService < Mattermost::Commands::BaseService + class IssueCreateService < IssueService def execute - return Mattermost::Messages::Issues.not_available unless available? + title, description = parse_command - issue = find_by_iid(iid) + present Issues::CreateService.new(project, current_user, title: title, description: description).execute + end + + private + + def parse_command + match = params[:text].match(/\Aissue create (?<title>.*)\n*/) + title = match[:title] + description = match.post_match - present issue + [title, description] end end end diff --git a/app/services/mattermost/commands/issue_search_service.rb b/app/services/mattermost/commands/issue_search_service.rb index 358a891ae60..072cb8e2590 100644 --- a/app/services/mattermost/commands/issue_search_service.rb +++ b/app/services/mattermost/commands/issue_search_service.rb @@ -1,9 +1,7 @@ module Mattermost module Commands - class IssueShowService < IssueService + class IssueSearchService < IssueService def execute - return Mattermost::Messages::Issues.not_available unless available? - present search_results end end diff --git a/app/services/mattermost/commands/issue_service.rb b/app/services/mattermost/commands/issue_service.rb index 9ce2fac455b..d27dcda21c4 100644 --- a/app/services/mattermost/commands/issue_service.rb +++ b/app/services/mattermost/commands/issue_service.rb @@ -1,7 +1,7 @@ module Mattermost module Commands class IssueService < Mattermost::Commands::BaseService - def available? + def self.available?(project) project.issues_enabled? && project.default_issues_tracker? end @@ -12,10 +12,6 @@ module Mattermost def readable?(issue) can?(current_user, :read_issue, issue) end - - def present - Mattermost::Presenter.issue - end end end end diff --git a/app/services/mattermost/commands/issue_show_service.rb b/app/services/mattermost/commands/issue_show_service.rb index f8ca41b2992..100b2780d0e 100644 --- a/app/services/mattermost/commands/issue_show_service.rb +++ b/app/services/mattermost/commands/issue_show_service.rb @@ -2,10 +2,7 @@ module Mattermost module Commands class IssueShowService < IssueService def execute - return Mattermost::Messages.not_available unless available? - - issue = find_by_iid(iid) - present issue + present find_by_iid end end end diff --git a/app/services/mattermost/commands/merge_request_search_service.rb b/app/services/mattermost/commands/merge_request_search_service.rb index 842719685e4..f675320ddae 100644 --- a/app/services/mattermost/commands/merge_request_search_service.rb +++ b/app/services/mattermost/commands/merge_request_search_service.rb @@ -1,10 +1,8 @@ module Mattermost module Commands - class MergeRequestService < Mattermost::Commands::BaseService + class MergeRequestSearchService < MergeRequestService def execute - return Mattermost::Messages::MergeRequests.not_available unless available? - - Mattermost::Messages::IssuePresenter.present search_results + present search_results end end end diff --git a/app/services/mattermost/commands/merge_request_service.rb b/app/services/mattermost/commands/merge_request_service.rb index 985ce649cac..8b81c9bbfd9 100644 --- a/app/services/mattermost/commands/merge_request_service.rb +++ b/app/services/mattermost/commands/merge_request_service.rb @@ -1,8 +1,8 @@ module Mattermost module Commands class MergeRequestService < Mattermost::Commands::BaseService - def available? - project.issues_enabled? && project.default_issues_tracker? + def self.available?(project) + project.merge_requests_enabled? end def collection @@ -12,10 +12,6 @@ module Mattermost def readable?(_) can?(current_user, :read_merge_request, project) end - - def present - Mattermost::Presenter.merge_request - end end end end diff --git a/app/services/mattermost/commands/merge_request_show_service.rb b/app/services/mattermost/commands/merge_request_show_service.rb index 9d9cb0f50f6..c5b2850169a 100644 --- a/app/services/mattermost/commands/merge_request_show_service.rb +++ b/app/services/mattermost/commands/merge_request_show_service.rb @@ -1,11 +1,8 @@ module Mattermost module Commands - class MergeRequestShowService < Mattermost::Commands::BaseService + class MergeRequestShowService < MergeRequestService def execute - return Mattermost::Messages.not_available unless available? - - merge_request = find_by_iid(iid) - present merge_request + present find_by_iid end end end |