Sha256: 64619c0e4816880dbaf9f4b007f2f2870d85c28162805f5f14ca70d439bac245

Contents?: true

Size: 1.28 KB

Versions: 7

Compression:

Stored size: 1.28 KB

Contents

# frozen_string_literal: true

module Hyrax
  module Listeners
    ##
    # Listens for object lifecycle events that require workflow changes and
    # manages workflow accordingly.
    class WorkflowListener
      ##
      # @note respects class attribute configuration at
      #   {Hyrax::Actors::InitializeWorkflowActor.workflow_factory}, but falls
      #   back on {Hyrax::Workflow::WorkflowFactory} to prepare for removal of
      #   Actors
      # @return [#create] default: {Hyrax::Workflow::WorkflowFactory}
      def factory
        if defined?(Hyrax::Actors::InitializeWorkflowActor)
          Hyrax::Actors::InitializeWorkflowActor.workflow_factory
        else
          Hyrax::Workflow::WorkflowFactory
        end
      end

      ##
      # Called when 'object.deposited' event is published
      # @param [Dry::Events::Event] event
      # @return [void]
      def on_object_deposited(event)
        return Rails.logger.warn("Skipping workflow initialization for #{event[:object]}; no user is given\n\t#{event}") if
          event[:user].blank?

        factory.create(event[:object], {}, event[:user])
      rescue Sipity::StateError, Sipity::ConversionError => err
        # don't error on known sipity error types; log instead
        Rails.logger.error(err)
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
hyrax-3.6.0 app/services/hyrax/listeners/workflow_listener.rb
hyrax-3.5.0 app/services/hyrax/listeners/workflow_listener.rb
hyrax-3.4.2 app/services/hyrax/listeners/workflow_listener.rb
hyrax-4.0.0.beta1 app/services/hyrax/listeners/workflow_listener.rb
hyrax-3.4.1 app/services/hyrax/listeners/workflow_listener.rb
hyrax-3.4.0 app/services/hyrax/listeners/workflow_listener.rb
hyrax-3.3.0 app/services/hyrax/listeners/workflow_listener.rb