From 4089be8fedbe0499108b32dc0c08b6378efc534c Mon Sep 17 00:00:00 2001 From: James Lopez Date: Fri, 12 Feb 2016 18:01:47 +0100 Subject: woo hoo - getting there with the cross-reference issue. Should fix the problem and updated spec --- app/services/system_note_service.rb | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'app/services/system_note_service.rb') diff --git a/app/services/system_note_service.rb b/app/services/system_note_service.rb index 34b6636c39f..843b44abd17 100644 --- a/app/services/system_note_service.rb +++ b/app/services/system_note_service.rb @@ -280,6 +280,7 @@ class SystemNoteService # mentioner - Mentionable object # # Returns Boolean + def self.cross_reference_exists?(noteable, mentioner) # Initial scope should be system notes of this noteable type notes = Note.system.where(noteable_type: noteable.class) @@ -291,14 +292,20 @@ class SystemNoteService notes = notes.where(noteable_id: noteable.id) end - gfm_reference = mentioner.gfm_reference(nil) - notes = notes.where('note LIKE ?', "#{cross_reference_note_prefix}%#{gfm_reference}") - - notes.count > 0 + notes_for_mentioner(mentioner, noteable, notes).count > 0 end private + def self.notes_for_mentioner(mentioner, noteable, notes) + if mentioner.is_a?(Commit) + notes.where('note LIKE ?', "#{cross_reference_note_prefix}%#{mentioner.to_reference(nil)}") + else + gfm_reference = mentioner.gfm_reference(noteable.project) + notes.where(note: cross_reference_note_content(gfm_reference)) + end + end + def self.create_note(args = {}) Note.create(args.merge(system: true)) end -- cgit v1.2.3