Sha256: 638d5d09f57aad298c9239066e4c9d500ee5c6a0e5af93d1f40f775ff0ec92ae

Contents?: true

Size: 1.19 KB

Versions: 34

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true

module Decidim
  # This class infers the current feature we're scoped to by looking at the
  # request parameters and injects it into the environment.
  class CurrentFeature
    # Public: Initializes the class.
    #
    # manifest - The manifest of the feature to check against.
    def initialize(manifest)
      @manifest = manifest
    end

    # Public: Matches the request against a feature and injects it into the
    #         environment.
    #
    # request - The request that holds the current feature relevant information.
    #
    # Returns a true if the request matched, false otherwise
    def matches?(request)
      env = request.env

      @participatory_space = env["decidim.current_participatory_space"]
      return false unless @participatory_space

      current_feature(env, request.params) ? true : false
    end

    private

    def current_feature(env, params)
      env["decidim.current_feature"] ||= detect_current_feature(params)
    end

    def detect_current_feature(params)
      @participatory_space.features.find do |feature|
        params["feature_id"] == feature.id.to_s && feature.manifest_name == @manifest.name.to_s
      end
    end
  end
end

Version data entries

34 entries across 34 versions & 2 rubygems

Version Path
decidim-core-0.10.1 app/constraints/decidim/current_feature.rb
decidim-core-0.10.0 app/constraints/decidim/current_feature.rb
decidim-core-0.9.3 app/constraints/decidim/current_feature.rb
decidim-core-0.9.2 app/constraints/decidim/current_feature.rb
decidim-core-0.9.1 app/constraints/decidim/current_feature.rb
decidim-core-0.9.0 app/constraints/decidim/current_feature.rb
decidim-core-0.8.4 app/constraints/decidim/current_feature.rb
decidim-core-0.8.3 app/constraints/decidim/current_feature.rb
decidim-core-0.8.2 app/constraints/decidim/current_feature.rb
decidim-core-0.8.1 app/constraints/decidim/current_feature.rb
decidim-core-0.8.0 app/constraints/decidim/current_feature.rb
decidim-core-0.7.4 app/constraints/decidim/current_feature.rb
decidim-core-0.7.3 app/constraints/decidim/current_feature.rb
decidim-core-0.7.2 app/constraints/decidim/current_feature.rb
decidim-core-0.7.1 app/constraints/decidim/current_feature.rb
decidim-core-0.7.0 app/constraints/decidim/current_feature.rb
decidim-core-0.6.8 app/constraints/decidim/current_feature.rb
decidim-0.6.8 decidim-core/app/constraints/decidim/current_feature.rb
decidim-core-0.6.7 app/constraints/decidim/current_feature.rb
decidim-0.6.7 decidim-core/app/constraints/decidim/current_feature.rb