Commit ba87b76de1177574e26ad09ca97c30fde76d7a45

Authored by Dmitriy Zaporozhets
1 parent 6cc4ac7b

Use EventCreateService for notes, merge requests

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
app/observers/merge_request_observer.rb
@@ -2,24 +2,21 @@ class MergeRequestObserver &lt; ActivityObserver @@ -2,24 +2,21 @@ class MergeRequestObserver &lt; ActivityObserver
2 observe :merge_request 2 observe :merge_request
3 3
4 def after_create(merge_request) 4 def after_create(merge_request)
5 - if merge_request.author_id  
6 - create_event(merge_request, Event.determine_action(merge_request))  
7 - end  
8 - 5 + event_service.open_mr(merge_request, current_user)
9 notification.new_merge_request(merge_request, current_user) 6 notification.new_merge_request(merge_request, current_user)
10 merge_request.create_cross_references!(merge_request.project, current_user) 7 merge_request.create_cross_references!(merge_request.project, current_user)
11 execute_hooks(merge_request) 8 execute_hooks(merge_request)
12 end 9 end
13 10
14 def after_close(merge_request, transition) 11 def after_close(merge_request, transition)
15 - create_event(merge_request, Event::CLOSED) 12 + event_service.close_mr(merge_request, current_user)
16 notification.close_mr(merge_request, current_user) 13 notification.close_mr(merge_request, current_user)
17 create_note(merge_request) 14 create_note(merge_request)
18 execute_hooks(merge_request) 15 execute_hooks(merge_request)
19 end 16 end
20 17
21 def after_reopen(merge_request, transition) 18 def after_reopen(merge_request, transition)
22 - create_event(merge_request, Event::REOPENED) 19 + event_service.reopen_mr(merge_request, current_user)
23 create_note(merge_request) 20 create_note(merge_request)
24 execute_hooks(merge_request) 21 execute_hooks(merge_request)
25 merge_request.reload_code 22 merge_request.reload_code
@@ -33,16 +30,6 @@ class MergeRequestObserver &lt; ActivityObserver @@ -33,16 +30,6 @@ class MergeRequestObserver &lt; ActivityObserver
33 execute_hooks(merge_request) 30 execute_hooks(merge_request)
34 end 31 end
35 32
36 - def create_event(record, status)  
37 - Event.create(  
38 - project: record.target_project,  
39 - target_id: record.id,  
40 - target_type: record.class.name,  
41 - action: status,  
42 - author_id: current_user.id  
43 - )  
44 - end  
45 -  
46 private 33 private
47 34
48 # Create merge request note with service comment like 'Status changed to closed' 35 # Create merge request note with service comment like 'Status changed to closed'
app/observers/note_observer.rb
@@ -2,6 +2,12 @@ class NoteObserver &lt; BaseObserver @@ -2,6 +2,12 @@ class NoteObserver &lt; BaseObserver
2 def after_create(note) 2 def after_create(note)
3 notification.new_note(note) 3 notification.new_note(note)
4 4
  5 + # Skip system notes, like status changes and cross-references.
  6 + # Skip wall notes to prevent spamming of dashboard
  7 + if note.noteable_type.present? && !note.system
  8 + event_service.leave_note(note, current_user)
  9 + end
  10 +
5 unless note.system? 11 unless note.system?
6 # Create a cross-reference note if this Note contains GFM that names an 12 # Create a cross-reference note if this Note contains GFM that names an
7 # issue, merge request, or commit. 13 # issue, merge request, or commit.
app/services/event_create_service.rb
@@ -42,6 +42,14 @@ class EventCreateService @@ -42,6 +42,14 @@ class EventCreateService
42 create_event(milestone, current_user, Event::CLOSED) 42 create_event(milestone, current_user, Event::CLOSED)
43 end 43 end
44 44
  45 + def reopen_milestone(milestone, current_user)
  46 + create_event(milestone, current_user, Event::REOPENED)
  47 + end
  48 +
  49 + def leave_note(note, current_user)
  50 + create_event(note, current_user, Event::COMMENTED)
  51 + end
  52 +
45 private 53 private
46 54
47 def create_event(record, current_user, status) 55 def create_event(record, current_user, status)
app/services/merge_requests/base_merge_service.rb
@@ -8,13 +8,7 @@ module MergeRequests @@ -8,13 +8,7 @@ module MergeRequests
8 end 8 end
9 9
10 def create_merge_event(merge_request, current_user) 10 def create_merge_event(merge_request, current_user)
11 - Event.create(  
12 - project: merge_request.target_project,  
13 - target_id: merge_request.id,  
14 - target_type: merge_request.class.name,  
15 - action: Event::MERGED,  
16 - author_id: current_user.id  
17 - ) 11 + EventCreateService.new.merge_mr(merge_request, current_user)
18 end 12 end
19 13
20 def execute_project_hooks(merge_request) 14 def execute_project_hooks(merge_request)
config/application.rb
@@ -19,7 +19,7 @@ module Gitlab @@ -19,7 +19,7 @@ module Gitlab
19 # config.plugins = [ :exception_notification, :ssl_requirement, :all ] 19 # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
20 20
21 # Activate observers that should always be running. 21 # Activate observers that should always be running.
22 - config.active_record.observers = :activity_observer, 22 + config.active_record.observers = :milestone_observer,
23 :project_activity_cache_observer, 23 :project_activity_cache_observer,
24 :issue_observer, 24 :issue_observer,
25 :key_observer, 25 :key_observer,