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 | 2 | observe :merge_request |
3 | 3 | |
4 | 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 | 6 | notification.new_merge_request(merge_request, current_user) |
10 | 7 | merge_request.create_cross_references!(merge_request.project, current_user) |
11 | 8 | execute_hooks(merge_request) |
12 | 9 | end |
13 | 10 | |
14 | 11 | def after_close(merge_request, transition) |
15 | - create_event(merge_request, Event::CLOSED) | |
12 | + event_service.close_mr(merge_request, current_user) | |
16 | 13 | notification.close_mr(merge_request, current_user) |
17 | 14 | create_note(merge_request) |
18 | 15 | execute_hooks(merge_request) |
19 | 16 | end |
20 | 17 | |
21 | 18 | def after_reopen(merge_request, transition) |
22 | - create_event(merge_request, Event::REOPENED) | |
19 | + event_service.reopen_mr(merge_request, current_user) | |
23 | 20 | create_note(merge_request) |
24 | 21 | execute_hooks(merge_request) |
25 | 22 | merge_request.reload_code |
... | ... | @@ -33,16 +30,6 @@ class MergeRequestObserver < ActivityObserver |
33 | 30 | execute_hooks(merge_request) |
34 | 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 | 33 | private |
47 | 34 | |
48 | 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 | 2 | def after_create(note) |
3 | 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 | 11 | unless note.system? |
6 | 12 | # Create a cross-reference note if this Note contains GFM that names an |
7 | 13 | # issue, merge request, or commit. | ... | ... |
app/services/event_create_service.rb
... | ... | @@ -42,6 +42,14 @@ class EventCreateService |
42 | 42 | create_event(milestone, current_user, Event::CLOSED) |
43 | 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 | 53 | private |
46 | 54 | |
47 | 55 | def create_event(record, current_user, status) | ... | ... |
app/services/merge_requests/base_merge_service.rb
... | ... | @@ -8,13 +8,7 @@ module MergeRequests |
8 | 8 | end |
9 | 9 | |
10 | 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 | 12 | end |
19 | 13 | |
20 | 14 | def execute_project_hooks(merge_request) | ... | ... |
config/application.rb
... | ... | @@ -19,7 +19,7 @@ module Gitlab |
19 | 19 | # config.plugins = [ :exception_notification, :ssl_requirement, :all ] |
20 | 20 | |
21 | 21 | # Activate observers that should always be running. |
22 | - config.active_record.observers = :activity_observer, | |
22 | + config.active_record.observers = :milestone_observer, | |
23 | 23 | :project_activity_cache_observer, |
24 | 24 | :issue_observer, |
25 | 25 | :key_observer, | ... | ... |