Class: Avo::PhotoObject

Inherits:
Object
  • Object
show all
Defined in:
lib/avo/photo_object.rb

Direct Known Subclasses

Avatar, Cover

Instance Method Summary collapse

Constructor Details

#initialize(resource:) ⇒ PhotoObject

Returns a new instance of PhotoObject.



4
5
6
# File 'lib/avo/photo_object.rb', line 4

def initialize(resource:)
  @resource = resource
end

Instance Method Details

#optionsObject



11
12
13
14
15
16
17
# File 'lib/avo/photo_object.rb', line 11

def options
  @options ||= if @resource.class&.send(key).present?
    @resource.class&.send(key)
  else
    {}
  end
end

#present?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/avo/photo_object.rb', line 48

def present?
  value.present?
end

#valueObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/avo/photo_object.rb', line 19

def value
  return unless options.fetch(:source, nil).present?

  if options[:source].is_a?(Symbol)
    return unless record.present?
    return if record.new_record?

    value = record.send(options[:source])

    # On edit view, prefer the persisted attachment to avoid rendering
    # temporary/unpersisted direct-upload values after a failed update.
    if value.instance_of?(ActiveStorage::Attached::One) && view&.edit?
      value = @resource.find_record(record.to_param).send(options[:source])
    end

    value
  elsif options[:source].respond_to?(:call)
    Avo::ExecutionContext.new(target: options[:source], record:, resource: @resource, view:).handle
  end
end

#visible_in_current_view?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/avo/photo_object.rb', line 44

def visible_in_current_view?
  send(:"visible_on_#{view}?")
end

#visible_onObject



40
41
42
# File 'lib/avo/photo_object.rb', line 40

def visible_on
  @visible_on ||= Array.wrap(options[:visible_on] || [:show, :forms])
end

#visible_on_edit?Boolean

Returns:

  • (Boolean)


56
# File 'lib/avo/photo_object.rb', line 56

def visible_on_edit? = visible_in_either?(:edit, :forms)

#visible_on_index?Boolean

Returns:

  • (Boolean)


52
# File 'lib/avo/photo_object.rb', line 52

def visible_on_index? = visible_in_either?(:index, :display)

#visible_on_new?Boolean

Returns:

  • (Boolean)


58
# File 'lib/avo/photo_object.rb', line 58

def visible_on_new? = visible_in_either?(:new, :forms)

#visible_on_show?Boolean

Returns:

  • (Boolean)


54
# File 'lib/avo/photo_object.rb', line 54

def visible_on_show? = visible_in_either?(:show, :display)