Sha256: 1fb7a55e1d2e3e1b28514f887c54a9c6c47f7aac2c47248f456f85acafdd5d2f

Contents?: true

Size: 1.39 KB

Versions: 16

Compression:

Stored size: 1.39 KB

Contents

module Avo
  class ExecutionContext
    include Avo::Concerns::HasHelpers

    attr_accessor :target, :context, :params, :view_context, :current_user, :request, :include, :main_app, :avo, :locale

    def initialize(**args)
      # Extend the class with custom modules if required.
      if args[:include].present?
        args[:include].each do |mod|
          self.class.send(:include, mod)
        end
      end

      # If target doesn't respond to call, we don't need to initialize the others attr_accessors.
      return unless (@target = args[:target]).respond_to? :call

      args.except(:target).each do |key, value|
        singleton_class.class_eval { attr_accessor key }
        instance_variable_set("@#{key}", value)
      end

      # Set defaults on not initialized accessors
      @context ||= Avo::Current.context
      @current_user ||= Avo::Current.user
      @params ||= Avo::Current.params
      @request ||= Avo::Current.request
      @view_context ||= Avo::Current.view_context
      @locale ||= Avo::Current.locale
      @main_app ||= @view_context.main_app
      @avo ||= @view_context.avo
    end

    delegate :result, to: :card
    delegate :authorize, to: Avo::Services::AuthorizationService

    # Return target if target is not callable, otherwise, execute target on this instance context
    def handle
      target.respond_to?(:call) ? instance_exec(&target) : target
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
avo-3.0.1.beta20 lib/avo/execution_context.rb
avo-3.0.1.beta21 lib/avo/execution_context.rb
avo-3.0.1.beta17 lib/avo/execution_context.rb
avo-3.0.1.beta22 lib/avo/execution_context.rb
avo-3.0.1.beta18 lib/avo/execution_context.rb
avo-3.0.1.beta19 lib/avo/execution_context.rb
avo-3.0.1.beta15 lib/avo/execution_context.rb
avo-3.0.1.beta16 lib/avo/execution_context.rb
avo-3.0.1.beta14 lib/avo/execution_context.rb
avo-3.0.1.beta12 lib/avo/execution_context.rb
avo-3.0.1.beta13 lib/avo/execution_context.rb
avo-3.0.1.beta10 lib/avo/execution_context.rb
avo-3.0.1.beta11 lib/avo/execution_context.rb
avo-3.0.0.pre19 lib/avo/execution_context.rb
avo-3.0.1.beta8 lib/avo/execution_context.rb
avo-3.0.1.beta9 lib/avo/execution_context.rb