Sha256: c47b1ad314ecc1955b458c3a561ce74244853ab1263b45c28263b8d4d68d3c17

Contents?: true

Size: 1.4 KB

Versions: 7

Compression:

Stored size: 1.4 KB

Contents

module ShopifyApp
  class ScripttagsManager
    class CreationFailed < StandardError; end

    def self.queue(shop_domain, shop_token)
      ShopifyApp::ScripttagsManagerJob.perform_later(shop_domain: shop_domain, shop_token: shop_token)
    end

    def recreate_scripttags!
      destroy_scripttags
      create_scripttags
    end

    def create_scripttags
      return unless required_scripttags.present?

      required_scripttags.each do |scripttag|
        create_scripttag(scripttag) unless scripttag_exists?(scripttag[:src])
      end
    end

    def destroy_scripttags
      ShopifyAPI::ScriptTag.all.each do |scripttag|
        ShopifyAPI::ScriptTag.delete(scripttag.id) if is_required_scripttag?(scripttag)
      end

      @current_scripttags = nil
    end

    private

    def required_scripttags
      ShopifyApp.configuration.scripttags
    end

    def is_required_scripttag?(scripttag)
      required_scripttags.map{ |w| w[:src] }.include? scripttag.src
    end

    def create_scripttag(attributes)
      attributes.reverse_merge!(format: 'json')
      scripttag = ShopifyAPI::ScriptTag.create(attributes)
      raise CreationFailed, scripttag.errors.full_messages.to_sentence unless scripttag.persisted?
      scripttag
    end

    def scripttag_exists?(src)
      current_scripttags[src]
    end

    def current_scripttags
      @current_scripttags ||= ShopifyAPI::ScriptTag.all.index_by(&:src)
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
shopify_app-7.0.10 lib/shopify_app/scripttags_manager.rb
shopify_app-7.0.9 lib/shopify_app/scripttags_manager.rb
shopify_app-7.0.8 lib/shopify_app/scripttags_manager.rb
shopify_app-7.0.7 lib/shopify_app/scripttags_manager.rb
shopify_app-7.0.6 lib/shopify_app/scripttags_manager.rb
shopify_app-7.0.5 lib/shopify_app/scripttags_manager.rb
shopify_app-7.0.4 lib/shopify_app/scripttags_manager.rb