Module: DiffPositionableNote
- Extended by:
- ActiveSupport::Concern
- Defined in:
- app/models/concerns/diff_positionable_note.rb
Instance Method Summary collapse
- #active?(diff_refs = nil) ⇒ Boolean
- #diff_refs_match_commit ⇒ Object
- #on_file? ⇒ Boolean
- #on_image? ⇒ Boolean
- #on_text? ⇒ Boolean
- #set_original_position ⇒ Object
- #should_update_position? ⇒ Boolean
- #supported? ⇒ Boolean
- #update_position ⇒ Object
Instance Method Details
#active?(diff_refs = nil) ⇒ Boolean
60 61 62 63 64 65 66 67 |
# File 'app/models/concerns/diff_positionable_note.rb', line 60 def active?(diff_refs = nil) return false unless supported? return true if for_commit? diff_refs ||= noteable.diff_refs self.position.diff_refs == diff_refs end |
#diff_refs_match_commit ⇒ Object
99 100 101 102 103 |
# File 'app/models/concerns/diff_positionable_note.rb', line 99 def diff_refs_match_commit return if self.original_position.diff_refs == commit&.diff_refs errors.add(:commit_id, 'does not match the diff refs') end |
#on_file? ⇒ Boolean
48 49 50 |
# File 'app/models/concerns/diff_positionable_note.rb', line 48 def on_file? !!position&.on_file? end |
#on_image? ⇒ Boolean
52 53 54 |
# File 'app/models/concerns/diff_positionable_note.rb', line 52 def on_image? !!position&.on_image? end |
#on_text? ⇒ Boolean
44 45 46 |
# File 'app/models/concerns/diff_positionable_note.rb', line 44 def on_text? !!position&.on_text? end |
#set_original_position ⇒ Object
69 70 71 72 73 |
# File 'app/models/concerns/diff_positionable_note.rb', line 69 def set_original_position return unless position self.original_position = self.position.dup unless self.original_position&.complete? end |
#should_update_position? ⇒ Boolean
40 41 42 |
# File 'app/models/concerns/diff_positionable_note.rb', line 40 def should_update_position? on_text? || on_file? end |
#supported? ⇒ Boolean
56 57 58 |
# File 'app/models/concerns/diff_positionable_note.rb', line 56 def supported? for_commit? || self.noteable.has_complete_diff_refs? end |
#update_position ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'app/models/concerns/diff_positionable_note.rb', line 75 def update_position return unless supported? return if for_commit? return if active? return unless position tracer = Gitlab::Diff::PositionTracer.new( project: self.project, old_diff_refs: self.position.diff_refs, new_diff_refs: self.noteable.diff_refs, paths: self.position.paths ) result = tracer.trace(self.position) return unless result if result[:outdated] self.change_position = result[:position] else self.position = result[:position] end end |