Sha256: c0d6d02d103a494322080fd17ce907d2f3a57f220f64da516027b66de6257bc8

Contents?: true

Size: 1.59 KB

Versions: 9

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true

module Decidim
  autoload :ActionAuthorizationHelper, "decidim/action_authorization_helper"
  autoload :ResourceHelper, "decidim/resource_helper"

  class ViewModel < Cell::ViewModel
    include ActionView::Helpers::TranslationHelper
    include ::Cell::Translation
    include Decidim::ResourceHelper
    include Decidim::ScopesHelper
    include ActionController::Helpers
    include Decidim::ActionAuthorization
    include Decidim::ActionAuthorizationHelper
    include Decidim::ReplaceButtonsHelper
    include Cell::Caching::Notifications
    include Decidim::MarkupHelper
    include ::Webpacker::Helper

    delegate :current_organization, to: :controller

    cache :show, if: :perform_caching? do
      cache_hash
    end

    def current_user
      context&.dig(:current_user) || controller&.current_user
    end

    def call(*)
      identifier = self.class.name.sub(/Cell$/, "").underscore
      instrument(:cell, identifier: identifier) do |_payload|
        super
      end
    end

    private

    def render_template(template, options, &block)
      ActiveSupport::Notifications.instrument(
        "render_template.action_view",
        identifier: template.file,
        layout: nil
      ) do
        super
      end
    end

    def instrument(name, **options)
      ActiveSupport::Notifications.instrument("render_#{name}.action_view", options) do |payload|
        yield payload
      end
    end

    def perform_caching?
      cache_hash.present?
    end

    def cache_hash
      nil
    end

    def decidim
      Decidim::Core::Engine.routes.url_helpers
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
decidim-core-0.26.10 lib/decidim/view_model.rb
decidim-core-0.26.9 lib/decidim/view_model.rb
decidim-core-0.26.8 lib/decidim/view_model.rb
decidim-core-0.26.7 lib/decidim/view_model.rb
decidim-core-0.26.5 lib/decidim/view_model.rb
decidim-core-0.26.4 lib/decidim/view_model.rb
decidim-core-0.26.3 lib/decidim/view_model.rb
decidim-core-0.26.2 lib/decidim/view_model.rb
decidim-core-0.26.1 lib/decidim/view_model.rb