51 lines
979 B
Ruby
51 lines
979 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
class SyntheticNote < Note
|
||
|
attr_accessor :resource_parent, :event
|
||
|
|
||
|
self.abstract_class = true
|
||
|
|
||
|
def self.note_attributes(action, event, resource, resource_parent)
|
||
|
resource ||= event.resource
|
||
|
|
||
|
attrs = {
|
||
|
system: true,
|
||
|
author: event.user,
|
||
|
created_at: event.created_at,
|
||
|
discussion_id: event.discussion_id,
|
||
|
noteable: resource,
|
||
|
event: event,
|
||
|
system_note_metadata: ::SystemNoteMetadata.new(action: action),
|
||
|
resource_parent: resource_parent
|
||
|
}
|
||
|
|
||
|
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
|