File: synthetic_note.rb

package info (click to toggle)
gitlab 17.6.5-19
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 629,368 kB
  • sloc: ruby: 1,915,304; javascript: 557,307; sql: 60,639; xml: 6,509; sh: 4,567; makefile: 1,239; python: 406
file content (52 lines) | stat: -rw-r--r-- 1,119 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# frozen_string_literal: true

class SyntheticNote < Note
  self.allow_legacy_sti_class = true

  attr_accessor :resource_parent, :event

  def self.note_attributes(action, event, resource, resource_parent)
    resource ||= event.resource

    attrs = {
      system: true,
      author: event.user,
      created_at: event.created_at,
      updated_at: event.created_at,
      discussion_id: event.discussion_id,
      noteable: resource,
      event: event,
      system_note_metadata: ::SystemNoteMetadata.new(action: action, id: event.discussion_id),
      resource_parent: resource_parent,
      imported_from: event.respond_to?(:imported_from) ? event.imported_from : 'none'
    }

    if resource_parent.is_a?(Project)
      attrs[:project_id] = resource_parent.id
    end

    attrs
  end

  def project
    resource_parent if resource_parent.is_a?(Project)
  end

  def group
    resource_parent if resource_parent.is_a?(Group)
  end

  def note
    @note ||= note_text
  end

  def note_html
    raise NotImplementedError
  end

  private

  def note_text(html: false)
    raise NotImplementedError
  end
end