Sha256: e99849781523764dae1d26e788b3d70c481c66c20e1b38e3d908782d15cbad67

Contents?: true

Size: 1 KB

Versions: 7

Compression:

Stored size: 1 KB

Contents

# frozen_string_literal: true

module Hyrax
  module Listeners
    ##
    # Listens for resource deleted events and cleans up associated members
    class MemberCleanupListener
      # Called when 'object.deleted' event is published
      # @param [Dry::Events::Event] event
      # @return [void]
      def on_object_deleted(event)
        event = event.to_h
        return unless event[:object]

        object = event[:object]
        user = event[:user]
        return unless object.is_a?(Hyrax::Work)

        Hyrax.query_service.find_parents(resource: object).each do |parent|
          parent.member_ids -= [object.id]
          Hyrax.persister.save(resource: parent)
          Hyrax.index_adapter.save(resource: parent)
          Hyrax.publisher.publish('object.membership.updated', object: parent, user: user)
        end
      end

      # Called when 'collection.deleted' event is published
      # @param [Dry::Events::Event] event
      # @return [void]
      def on_collection_deleted(event); end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
hyrax-5.1.0.pre.beta1 app/services/hyrax/listeners/member_cleanup_listener.rb
hyrax-5.0.4 app/services/hyrax/listeners/member_cleanup_listener.rb
hyrax-5.0.3 app/services/hyrax/listeners/member_cleanup_listener.rb
hyrax-5.0.2 app/services/hyrax/listeners/member_cleanup_listener.rb
hyrax-5.0.1 app/services/hyrax/listeners/member_cleanup_listener.rb
hyrax-5.0.0 app/services/hyrax/listeners/member_cleanup_listener.rb
hyrax-5.0.0.rc3 app/services/hyrax/listeners/member_cleanup_listener.rb