summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-03-25 15:08:25 +0200
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-03-25 15:08:25 +0200
commitba87b76de1177574e26ad09ca97c30fde76d7a45 (patch)
tree6b738cca6acdaedbc4e62bd200469a42c7929860
parent6cc4ac7b98b0fb2ba028644fd8dc4e2d89b65e2a (diff)
downloadgitlab-ce-ba87b76de1177574e26ad09ca97c30fde76d7a45.tar.gz
Use EventCreateService for notes, merge requests
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
-rw-r--r--app/observers/merge_request_observer.rb19
-rw-r--r--app/observers/note_observer.rb6
-rw-r--r--app/services/event_create_service.rb8
-rw-r--r--app/services/merge_requests/base_merge_service.rb8
-rw-r--r--config/application.rb2
5 files changed, 19 insertions, 24 deletions
diff --git a/app/observers/merge_request_observer.rb b/app/observers/merge_request_observer.rb
index f2e2d16c943..dd8dcd4b409 100644
--- a/app/observers/merge_request_observer.rb
+++ b/app/observers/merge_request_observer.rb
@@ -2,24 +2,21 @@ class MergeRequestObserver < ActivityObserver
observe :merge_request
def after_create(merge_request)
- if merge_request.author_id
- create_event(merge_request, Event.determine_action(merge_request))
- end
-
+ event_service.open_mr(merge_request, current_user)
notification.new_merge_request(merge_request, current_user)
merge_request.create_cross_references!(merge_request.project, current_user)
execute_hooks(merge_request)
end
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)
create_note(merge_request)
execute_hooks(merge_request)
end
def after_reopen(merge_request, transition)
- create_event(merge_request, Event::REOPENED)
+ event_service.reopen_mr(merge_request, current_user)
create_note(merge_request)
execute_hooks(merge_request)
merge_request.reload_code
@@ -33,16 +30,6 @@ class MergeRequestObserver < ActivityObserver
execute_hooks(merge_request)
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
# Create merge request note with service comment like 'Status changed to closed'
diff --git a/app/observers/note_observer.rb b/app/observers/note_observer.rb
index d31b6e8d7ce..337bb1dc5ae 100644
--- a/app/observers/note_observer.rb
+++ b/app/observers/note_observer.rb
@@ -2,6 +2,12 @@ class NoteObserver < BaseObserver
def after_create(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?
# Create a cross-reference note if this Note contains GFM that names an
# issue, merge request, or commit.
diff --git a/app/services/event_create_service.rb b/app/services/event_create_service.rb
index 8ff4dad674c..8d8a5873e62 100644
--- a/app/services/event_create_service.rb
+++ b/app/services/event_create_service.rb
@@ -42,6 +42,14 @@ class EventCreateService
create_event(milestone, current_user, Event::CLOSED)
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
def create_event(record, current_user, status)
diff --git a/app/services/merge_requests/base_merge_service.rb b/app/services/merge_requests/base_merge_service.rb
index d0f777d50ec..9bc50d3d16c 100644
--- a/app/services/merge_requests/base_merge_service.rb
+++ b/app/services/merge_requests/base_merge_service.rb
@@ -8,13 +8,7 @@ module MergeRequests
end
def create_merge_event(merge_request, current_user)
- Event.create(
- project: merge_request.target_project,
- target_id: merge_request.id,
- target_type: merge_request.class.name,
- action: Event::MERGED,
- author_id: current_user.id
- )
+ EventCreateService.new.merge_mr(merge_request, current_user)
end
def execute_project_hooks(merge_request)
diff --git a/config/application.rb b/config/application.rb
index 4d7c1415c8e..a782dd1d01e 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -19,7 +19,7 @@ module Gitlab
# config.plugins = [ :exception_notification, :ssl_requirement, :all ]
# Activate observers that should always be running.
- config.active_record.observers = :activity_observer,
+ config.active_record.observers = :milestone_observer,
:project_activity_cache_observer,
:issue_observer,
:key_observer,