Commit ba87b76d authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Use EventCreateService for notes, merge requests

Signed-off-by: default avatarDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
parent 6cc4ac7b
...@@ -2,24 +2,21 @@ class MergeRequestObserver < ActivityObserver ...@@ -2,24 +2,21 @@ class MergeRequestObserver < ActivityObserver
observe :merge_request observe :merge_request
def after_create(merge_request) def after_create(merge_request)
if merge_request.author_id event_service.open_mr(merge_request, current_user)
create_event(merge_request, Event.determine_action(merge_request))
end
notification.new_merge_request(merge_request, current_user) notification.new_merge_request(merge_request, current_user)
merge_request.create_cross_references!(merge_request.project, current_user) merge_request.create_cross_references!(merge_request.project, current_user)
execute_hooks(merge_request) execute_hooks(merge_request)
end end
def after_close(merge_request, transition) def after_close(merge_request, transition)
create_event(merge_request, Event::CLOSED) event_service.close_mr(merge_request, current_user)
notification.close_mr(merge_request, current_user) notification.close_mr(merge_request, current_user)
create_note(merge_request) create_note(merge_request)
execute_hooks(merge_request) execute_hooks(merge_request)
end end
def after_reopen(merge_request, transition) def after_reopen(merge_request, transition)
create_event(merge_request, Event::REOPENED) event_service.reopen_mr(merge_request, current_user)
create_note(merge_request) create_note(merge_request)
execute_hooks(merge_request) execute_hooks(merge_request)
merge_request.reload_code merge_request.reload_code
...@@ -33,16 +30,6 @@ class MergeRequestObserver < ActivityObserver ...@@ -33,16 +30,6 @@ class MergeRequestObserver < ActivityObserver
execute_hooks(merge_request) execute_hooks(merge_request)
end end
def create_event(record, status)
Event.create(
project: record.target_project,
target_id: record.id,
target_type: record.class.name,
action: status,
author_id: current_user.id
)
end
private private
# Create merge request note with service comment like 'Status changed to closed' # Create merge request note with service comment like 'Status changed to closed'
......
...@@ -2,6 +2,12 @@ class NoteObserver < BaseObserver ...@@ -2,6 +2,12 @@ class NoteObserver < BaseObserver
def after_create(note) def after_create(note)
notification.new_note(note) notification.new_note(note)
# Skip system notes, like status changes and cross-references.
# Skip wall notes to prevent spamming of dashboard
if note.noteable_type.present? && !note.system
event_service.leave_note(note, current_user)
end
unless note.system? unless note.system?
# Create a cross-reference note if this Note contains GFM that names an # Create a cross-reference note if this Note contains GFM that names an
# issue, merge request, or commit. # issue, merge request, or commit.
......
...@@ -42,6 +42,14 @@ class EventCreateService ...@@ -42,6 +42,14 @@ class EventCreateService
create_event(milestone, current_user, Event::CLOSED) create_event(milestone, current_user, Event::CLOSED)
end end
def reopen_milestone(milestone, current_user)
create_event(milestone, current_user, Event::REOPENED)
end
def leave_note(note, current_user)
create_event(note, current_user, Event::COMMENTED)
end
private private
def create_event(record, current_user, status) def create_event(record, current_user, status)
......
...@@ -8,13 +8,7 @@ module MergeRequests ...@@ -8,13 +8,7 @@ module MergeRequests
end end
def create_merge_event(merge_request, current_user) def create_merge_event(merge_request, current_user)
Event.create( EventCreateService.new.merge_mr(merge_request, current_user)
project: merge_request.target_project,
target_id: merge_request.id,
target_type: merge_request.class.name,
action: Event::MERGED,
author_id: current_user.id
)
end end
def execute_project_hooks(merge_request) def execute_project_hooks(merge_request)
......
...@@ -19,7 +19,7 @@ module Gitlab ...@@ -19,7 +19,7 @@ module Gitlab
# config.plugins = [ :exception_notification, :ssl_requirement, :all ] # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
# Activate observers that should always be running. # Activate observers that should always be running.
config.active_record.observers = :activity_observer, config.active_record.observers = :milestone_observer,
:project_activity_cache_observer, :project_activity_cache_observer,
:issue_observer, :issue_observer,
:key_observer, :key_observer,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment