Sha256: 1558758dc251d4722b72eae84a06c3c0c369919c91960f25bb7ef7b914fe860a

Contents?: true

Size: 1.91 KB

Versions: 22

Compression:

Stored size: 1.91 KB

Contents

module Spree
  module Core
    module ControllerHelpers
      module Currency
        extend ActiveSupport::Concern

        included do
          if defined?(helper_method)
            helper_method :supported_currencies
            helper_method :supported_currencies_for_all_stores
            helper_method :current_currency
            helper_method :supported_currency?
            helper_method :currency_param
          end
        end

        def current_currency
          @current_currency ||= if defined?(session) && session.key?(:currency) && supported_currency?(session[:currency])
                                  session[:currency]
                                elsif params[:currency].present? && supported_currency?(params[:currency])
                                  params[:currency]
                                elsif current_store.present?
                                  current_store.default_currency
                                else
                                  Spree::Store.default.default_currency
                                end&.upcase
        end

        def supported_currencies
          @supported_currencies ||= current_store&.supported_currencies_list
        end

        def supported_currencies_for_all_stores
          @supported_currencies_for_all_stores ||= begin
            (
              Spree::Store.pluck(:supported_currencies).map { |c| c&.split(',') }.flatten + Spree::Store.pluck(:default_currency)
            ).
              compact.uniq.map { |code| ::Money::Currency.find(code.strip) }
          end
        end

        def supported_currency?(currency_iso_code)
          return false if supported_currencies.nil?

          supported_currencies.map(&:iso_code).include?(currency_iso_code.upcase)
        end

        def currency_param
          return if current_currency == current_store.default_currency

          current_currency
        end
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
spree_core-4.10.1 lib/spree/core/controller_helpers/currency.rb
spree_core-4.10.0 lib/spree/core/controller_helpers/currency.rb
spree_core-4.9.0 lib/spree/core/controller_helpers/currency.rb
spree_core-4.8.3 lib/spree/core/controller_helpers/currency.rb
spree_core-4.8.2 lib/spree/core/controller_helpers/currency.rb
spree_core-4.7.3 lib/spree/core/controller_helpers/currency.rb
spree_core-4.6.6 lib/spree/core/controller_helpers/currency.rb
spree_core-4.5.5 lib/spree/core/controller_helpers/currency.rb
spree_core-4.5.4 lib/spree/core/controller_helpers/currency.rb
spree_core-4.6.5 lib/spree/core/controller_helpers/currency.rb
spree_core-4.7.2 lib/spree/core/controller_helpers/currency.rb
spree_core-4.7.1 lib/spree/core/controller_helpers/currency.rb
spree_core-4.6.4 lib/spree/core/controller_helpers/currency.rb
spree_core-4.7.0 lib/spree/core/controller_helpers/currency.rb
spree_core-4.6.3 lib/spree/core/controller_helpers/currency.rb
spree_core-4.6.2 lib/spree/core/controller_helpers/currency.rb
spree_core-4.6.1 lib/spree/core/controller_helpers/currency.rb
spree_core-4.6.0 lib/spree/core/controller_helpers/currency.rb
spree_core-4.5.3 lib/spree/core/controller_helpers/currency.rb
spree_core-4.5.2 lib/spree/core/controller_helpers/currency.rb