diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/projects/notes_controller.rb | 2 | ||||
-rw-r--r-- | app/models/note.rb | 5 | ||||
-rw-r--r-- | app/observers/note_observer.rb | 20 | ||||
-rw-r--r-- | app/services/notes/create_service.rb | 19 |
4 files changed, 23 insertions, 23 deletions
diff --git a/app/controllers/projects/notes_controller.rb b/app/controllers/projects/notes_controller.rb index b5b0446b43f..5df92b29eda 100644 --- a/app/controllers/projects/notes_controller.rb +++ b/app/controllers/projects/notes_controller.rb @@ -21,7 +21,7 @@ class Projects::NotesController < Projects::ApplicationController end def create - @note = Notes::CreateService.new(project, current_user, params).execute + @note = Notes::CreateService.new(project, current_user, params[:note]).execute respond_to do |format| format.json { render_note_json(@note) } diff --git a/app/models/note.rb b/app/models/note.rb index 659cd752071..01026cd3994 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -57,6 +57,7 @@ class Note < ActiveRecord::Base serialize :st_diff before_create :set_diff, if: ->(n) { n.line_code.present? } + after_update :set_references class << self def create_status_change_note(noteable, project, author, status, source) @@ -314,4 +315,8 @@ class Note < ActiveRecord::Base order('id DESC').limit(100). update_all(updated_at: Time.now) end + + def set_references + notice_added_references(project, author) + end end diff --git a/app/observers/note_observer.rb b/app/observers/note_observer.rb deleted file mode 100644 index bb0b0876eca..00000000000 --- a/app/observers/note_observer.rb +++ /dev/null @@ -1,20 +0,0 @@ -class NoteObserver < BaseObserver - def after_create(note) - notification.new_note(note) - - # Skip system notes, like status changes and cross-references. - unless note.system - event_service.leave_note(note, note.author) - - # Create a cross-reference note if this Note contains GFM that names an - # issue, merge request, or commit. - note.references.each do |mentioned| - Note.create_cross_reference_note(mentioned, note.noteable, note.author, note.project) - end - end - end - - def after_update(note) - note.notice_added_references(note.project, note.author) - end -end diff --git a/app/services/notes/create_service.rb b/app/services/notes/create_service.rb index ff6dfb61139..f64006a4edc 100644 --- a/app/services/notes/create_service.rb +++ b/app/services/notes/create_service.rb @@ -1,10 +1,25 @@ module Notes class CreateService < BaseService def execute - note = project.notes.new(params[:note]) + note = project.notes.new(params) note.author = current_user note.system = false - note.save + + if note.save + notification_service.new_note(note) + + # Skip system notes, like status changes and cross-references. + unless note.system + event_service.leave_note(note, note.author) + + # Create a cross-reference note if this Note contains GFM that names an + # issue, merge request, or commit. + note.references.each do |mentioned| + Note.create_cross_reference_note(mentioned, note.noteable, note.author, note.project) + end + end + end + note end end |