Commit 27d952b1 authored by Douwe Maan's avatar Douwe Maan

Fix cross-references originating from notes

parent b0164771
...@@ -66,8 +66,8 @@ module Mentionable ...@@ -66,8 +66,8 @@ module Mentionable
end end
# Create a cross-reference Note for each GFM reference to another Mentionable found in +mentionable_text+. # Create a cross-reference Note for each GFM reference to another Mentionable found in +mentionable_text+.
def create_cross_references!(author = self.author, without = []) def create_cross_references!(author = self.author, without = [], text = self.mentionable_text)
refs = referenced_mentionables(author) refs = referenced_mentionables(author, text)
# We're using this method instead of Array diffing because that requires # We're using this method instead of Array diffing because that requires
# both of the object's `hash` values to be the same, which may not be the # both of the object's `hash` values to be the same, which may not be the
......
...@@ -62,7 +62,6 @@ class Note < ActiveRecord::Base ...@@ -62,7 +62,6 @@ class Note < ActiveRecord::Base
serialize :st_diff serialize :st_diff
before_create :set_diff, if: ->(n) { n.line_code.present? } before_create :set_diff, if: ->(n) { n.line_code.present? }
after_update :set_references
class << self class << self
def discussions_from_notes(notes) def discussions_from_notes(notes)
...@@ -333,15 +332,13 @@ class Note < ActiveRecord::Base ...@@ -333,15 +332,13 @@ class Note < ActiveRecord::Base
end end
def noteable_type_name def noteable_type_name
if noteable_type.present? noteable_type.downcase if noteable_type.present?
noteable_type.downcase
end
end end
# FIXME: Hack for polymorphic associations with STI # FIXME: Hack for polymorphic associations with STI
# For more information visit http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#label-Polymorphic+Associations # For more information visit http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#label-Polymorphic+Associations
def noteable_type=(sType) def noteable_type=(noteable_type)
super(sType.to_s.classify.constantize.base_class.to_s) super(noteable_type.to_s.classify.constantize.base_class.to_s)
end end
# Reset notes events cache # Reset notes events cache
...@@ -357,10 +354,6 @@ class Note < ActiveRecord::Base ...@@ -357,10 +354,6 @@ class Note < ActiveRecord::Base
Event.reset_event_cache_for(self) Event.reset_event_cache_for(self)
end end
def set_references
create_new_cross_references!
end
def system? def system?
read_attribute(:system) read_attribute(:system)
end end
......
...@@ -11,13 +11,7 @@ module Notes ...@@ -11,13 +11,7 @@ module Notes
# Skip system notes, like status changes and cross-references. # Skip system notes, like status changes and cross-references.
unless note.system unless note.system
event_service.leave_note(note, note.author) event_service.leave_note(note, note.author)
note.create_cross_references!
# Create a cross-reference note if this Note contains GFM that names an
# issue, merge request, or commit.
note.references.each do |mentioned|
SystemNoteService.cross_reference(mentioned, note.noteable, note.author)
end
execute_hooks(note) execute_hooks(note)
end end
end end
......
...@@ -4,7 +4,7 @@ module Notes ...@@ -4,7 +4,7 @@ module Notes
return note unless note.editable? return note unless note.editable?
note.update_attributes(params.merge(updated_by: current_user)) note.update_attributes(params.merge(updated_by: current_user))
note.create_new_cross_references!
note.reset_events_cache note.reset_events_cache
note note
......
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