1# frozen_string_literal: true
2
3# A discussion on merge request or commit diffs consisting of `LegacyDiffNote` notes.
4#
5# All new diff discussions are of the type `DiffDiscussion`, but any diff discussions created
6# before the introduction of the new implementation still use `LegacyDiffDiscussion`.
7#
8# A discussion of this type is never resolvable.
9class LegacyDiffDiscussion < Discussion
10  include DiscussionOnDiff
11
12  memoized_values << :active
13
14  def self.note_class
15    LegacyDiffNote
16  end
17
18  def legacy_diff_discussion?
19    true
20  end
21
22  def on_image?
23    false
24  end
25
26  def on_text?
27    true
28  end
29
30  def active?(*args)
31    return @active if @active.present?
32
33    @active = first_note.active?(*args)
34  end
35
36  def collapsed?
37    !active?
38  end
39
40  def merge_request_version_params
41    return unless for_merge_request?
42
43    if active?
44      {}
45    else
46      nil
47    end
48  end
49
50  def reply_attributes
51    super.merge(line_code: line_code)
52  end
53end
54