Sha256: 3f0fedd76e6b27b4493396946ec203e32ca737e566f61358c9bf38ad95e58777

Contents?: true

Size: 1 KB

Versions: 23

Compression:

Stored size: 1 KB

Contents

# frozen_string_literal: true

module Shimmer
  class ConsentSettings
    SETTINGS = [:essential, :targeting, :statistic].freeze
    DEFAULT = [:essential].freeze

    SETTINGS.each do |setting|
      attr_accessor setting
      alias_method "#{setting}?", setting
    end

    def initialize(cookies)
      @cookies = cookies
      allowed = @cookies[:consent].to_s.split(",").map(&:strip)
      SETTINGS.each do |setting|
        instance_variable_set "@#{setting}", DEFAULT.include?(setting) || allowed.include?(setting.to_s)
      end
    end

    def save
      value = SETTINGS.map { |e| e.to_s if instance_variable_get("@#{e}") }.compact.join(",")
      @cookies.permanent[:consent] = {value: value, expires: 2.years.from_now}
    end

    def given?
      @cookies[:consent].present?
    end
  end

  module Consent
    extend ActiveSupport::Concern

    included do
      helper_method :consent_settings
      def consent_settings
        @consent_settings ||= ConsentSettings.new(cookies)
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
shimmer-0.0.41 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.40 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.39 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.38 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.37 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.36 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.35 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.34 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.33 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.32 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.31 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.30 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.29 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.28 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.27 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.26 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.25 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.24 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.23 lib/shimmer/utils/consent_settings.rb
shimmer-0.0.22 lib/shimmer/utils/consent_settings.rb