Sha256: 5406ab869bb7221d537622b07608d7b58a3ac647b1a39303053eceeb4a31bceb

Contents?: true

Size: 1.25 KB

Versions: 36

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true

module Alchemy
  class Picture < BaseRecord
    class Url
      attr_reader :variant, :thumb

      # @param [Alchemy::PictureVariant]
      #
      def initialize(variant)
        raise ArgumentError, "Variant missing!" if variant.nil?

        @variant = variant
      end

      # The URL to a variant of a picture
      #
      # @return [String]
      #
      def call(params = {})
        return variant.image.url(params) unless processible_image?

        "/#{uid}"
      end

      private

      def processible_image?
        variant.image.is_a?(::Dragonfly::Job)
      end

      def uid
        signature = PictureThumb::Signature.call(variant)
        if find_thumb_by(signature)
          thumb.uid
        else
          uid = PictureThumb::Uid.call(signature, variant)
          ActiveRecord::Base.connected_to(role: ActiveRecord.writing_role) do
            PictureThumb::Create.call(variant, signature, uid)
          end
          uid
        end
      end

      def find_thumb_by(signature)
        @thumb = if variant.picture.thumbs.loaded?
          variant.picture.thumbs.find { |t| t.signature == signature }
        else
          variant.picture.thumbs.find_by(signature: signature)
        end
      end
    end
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
alchemy_cms-7.4.2 app/models/alchemy/picture/url.rb
alchemy_cms-7.3.6 app/models/alchemy/picture/url.rb
alchemy_cms-7.2.9 app/models/alchemy/picture/url.rb
alchemy_cms-7.4.1 app/models/alchemy/picture/url.rb
alchemy_cms-7.4.0 app/models/alchemy/picture/url.rb
alchemy_cms-7.3.5 app/models/alchemy/picture/url.rb
alchemy_cms-7.2.8 app/models/alchemy/picture/url.rb
alchemy_cms-7.1.13 app/models/alchemy/picture/url.rb
alchemy_cms-7.3.4 app/models/alchemy/picture/url.rb
alchemy_cms-7.3.3 app/models/alchemy/picture/url.rb
alchemy_cms-7.3.2 app/models/alchemy/picture/url.rb
alchemy_cms-7.2.7 app/models/alchemy/picture/url.rb
alchemy_cms-7.3.1 app/models/alchemy/picture/url.rb
alchemy_cms-7.3.0 app/models/alchemy/picture/url.rb
alchemy_cms-7.2.6 app/models/alchemy/picture/url.rb
alchemy_cms-7.2.5 app/models/alchemy/picture/url.rb
alchemy_cms-7.1.12 app/models/alchemy/picture/url.rb
alchemy_cms-7.2.4 app/models/alchemy/picture/url.rb
alchemy_cms-7.1.11 app/models/alchemy/picture/url.rb
alchemy_cms-7.2.3 app/models/alchemy/picture/url.rb