Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@vanlanduyt.co>2017-02-27 20:12:52 +0300
committerBob Van Landuyt <bob@gitlab.com>2017-03-13 10:27:51 +0300
commitffe135ccf650da3d2415447e4ce648880c1a241d (patch)
tree14bf1a10764ea10fbf51a01cc6a3da12f163e7e5 /app/services/issues
parent6ffa988ac7cae8d9a93680aaee1481e4169d6b4a (diff)
Move functionality for resolving discussions into a concern
Diffstat (limited to 'app/services/issues')
-rw-r--r--app/services/issues/base_service.rb27
-rw-r--r--app/services/issues/build_service.rb3
-rw-r--r--app/services/issues/create_service.rb11
-rw-r--r--app/services/issues/resolve_discussions.rb35
4 files changed, 40 insertions, 36 deletions
diff --git a/app/services/issues/base_service.rb b/app/services/issues/base_service.rb
index 058c398df02..ee1b40db718 100644
--- a/app/services/issues/base_service.rb
+++ b/app/services/issues/base_service.rb
@@ -1,13 +1,5 @@
module Issues
class BaseService < ::IssuableBaseService
- attr_reader :merge_request_for_resolving_discussions_iid, :discussion_to_resolve_id
- def initialize(*args)
- super
-
- @merge_request_for_resolving_discussions_iid ||= params.delete(:merge_request_for_resolving_discussions)
- @discussion_to_resolve_id ||= params.delete(:discussion_to_resolve)
- end
-
def hook_data(issue, action)
issue_data = issue.to_hook_data(current_user)
issue_url = Gitlab::UrlBuilder.build(issue)
@@ -15,25 +7,6 @@ module Issues
issue_data
end
- def merge_request_for_resolving_discussions
- @merge_request_for_resolving_discussions ||= MergeRequestsFinder.new(current_user, project_id: project.id).
- execute.
- find_by(iid: merge_request_for_resolving_discussions_iid)
- end
-
- def discussions_to_resolve
- return [] unless merge_request_for_resolving_discussions
-
- @discussions_to_resolve ||= NotesFinder.new(project, current_user, {
- discussion_id: discussion_to_resolve_id,
- target_type: MergeRequest.name.underscore,
- target_id: merge_request_for_resolving_discussions.id
- }).
- execute.
- discussions.
- select(&:to_be_resolved?)
- end
-
private
def execute_hooks(issue, action = 'open')
diff --git a/app/services/issues/build_service.rb b/app/services/issues/build_service.rb
index 1bcc5abd3f2..5f303b73d16 100644
--- a/app/services/issues/build_service.rb
+++ b/app/services/issues/build_service.rb
@@ -1,6 +1,9 @@
module Issues
class BuildService < Issues::BaseService
+ include ResolveDiscussions
+
def execute
+ filter_resolve_discussion_params
@issue = project.issues.new(issue_params)
end
diff --git a/app/services/issues/create_service.rb b/app/services/issues/create_service.rb
index 007c8354c8c..f40cb4a8fa0 100644
--- a/app/services/issues/create_service.rb
+++ b/app/services/issues/create_service.rb
@@ -1,9 +1,11 @@
module Issues
class CreateService < Issues::BaseService
include SpamCheckService
+ include ResolveDiscussions
def execute
filter_spam_check_params
+ filter_resolve_discussion_params
issue_attributes = params.merge(
merge_request_for_resolving_discussions: merge_request_for_resolving_discussions_iid,
@@ -28,15 +30,6 @@ module Issues
resolve_discussions_with_issue(issuable)
end
- def resolve_discussions_with_issue(issue)
- return if discussions_to_resolve.empty?
-
- Discussions::ResolveService.new(project, current_user,
- merge_request: merge_request_for_resolving_discussions,
- follow_up_issue: issue).
- execute(discussions_to_resolve)
- end
-
private
def user_agent_detail_service
diff --git a/app/services/issues/resolve_discussions.rb b/app/services/issues/resolve_discussions.rb
new file mode 100644
index 00000000000..62a89ae4c0b
--- /dev/null
+++ b/app/services/issues/resolve_discussions.rb
@@ -0,0 +1,35 @@
+module Issues
+ module ResolveDiscussions
+ attr_reader :merge_request_for_resolving_discussions_iid, :discussion_to_resolve_id
+
+ def filter_resolve_discussion_params
+ @merge_request_for_resolving_discussions_iid ||= params.delete(:merge_request_for_resolving_discussions)
+ @discussion_to_resolve_id ||= params.delete(:discussion_to_resolve)
+ end
+
+ def resolve_discussions_with_issue(issue)
+ return if discussions_to_resolve.empty?
+
+ Discussions::ResolveService.new(project, current_user,
+ merge_request: merge_request_for_resolving_discussions,
+ follow_up_issue: issue).
+ execute(discussions_to_resolve)
+ end
+
+ def merge_request_for_resolving_discussions
+ @merge_request_for_resolving_discussions ||= MergeRequestsFinder.new(current_user, project_id: project.id).
+ execute.
+ find_by(iid: merge_request_for_resolving_discussions_iid)
+ end
+
+ def discussions_to_resolve
+ return [] unless merge_request_for_resolving_discussions
+
+ @discussions_to_resolve ||= NotesFinder.new(project, current_user, {
+ discussion_id: discussion_to_resolve_id,
+ target_type: MergeRequest.name.underscore,
+ target_id: merge_request_for_resolving_discussions.id
+ }).execute.discussions.select(&:to_be_resolved?)
+ end
+ end
+end