Commit ba87b76de1177574e26ad09ca97c30fde76d7a45
1 parent
6cc4ac7b
Exists in
spb-stable
and in
3 other branches
Use EventCreateService for notes, merge requests
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Showing
5 changed files
with
19 additions
and
24 deletions
Show diff stats
app/observers/merge_request_observer.rb
@@ -2,24 +2,21 @@ class MergeRequestObserver < ActivityObserver | @@ -2,24 +2,21 @@ class MergeRequestObserver < 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 < ActivityObserver | @@ -33,16 +30,6 @@ class MergeRequestObserver < 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 < BaseObserver | @@ -2,6 +2,12 @@ class NoteObserver < 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, |