Sha256: ac3543eb63021c0cfa20cb5a10194fd8d09047d38caa7b1fe2239fb4e7100704

Contents?: true

Size: 822 Bytes

Versions: 10

Compression:

Stored size: 822 Bytes

Contents

# frozen_string_literal: true

class Avo::Fields::Common::Files::ViewType::GridItemComponent < Avo::BaseComponent
  prop :field
  prop :resource
  prop :file
  prop :extra_classes

  def id
    @field.id
  end

  def file
    @file || @field.value.attachment
  rescue
    nil
  end

  def is_image?
    file.image? || @field.is_image
  rescue
    false
  end

  def is_audio?
    file.audio? || @field.is_audio
  rescue
    false
  end

  def is_video?
    file.video? || @field.is_video
  rescue
    false
  end

  def render?
    record_persisted?
  end

  # If record is not persistent blob is automatically destroyed otherwise it can be "lost" on storage
  def record_persisted?
    return true if @resource.record.persisted?

    ActiveStorage::Blob.destroy(file.blob_id) if file.blob_id.present?
    false
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
avo-3.15.1 app/components/avo/fields/common/files/view_type/grid_item_component.rb
avo-3.15.0 app/components/avo/fields/common/files/view_type/grid_item_component.rb
avo-3.14.5 app/components/avo/fields/common/files/view_type/grid_item_component.rb
avo-3.14.4 app/components/avo/fields/common/files/view_type/grid_item_component.rb
avo-3.14.3 app/components/avo/fields/common/files/view_type/grid_item_component.rb
avo-3.14.2 app/components/avo/fields/common/files/view_type/grid_item_component.rb
avo-3.14.1 app/components/avo/fields/common/files/view_type/grid_item_component.rb
avo-3.14.0 app/components/avo/fields/common/files/view_type/grid_item_component.rb
avo-3.13.7 app/components/avo/fields/common/files/view_type/grid_item_component.rb
avo-3.13.6 app/components/avo/fields/common/files/view_type/grid_item_component.rb