Class: RailsAuditLog::Graphql::Subscriptions::Broadcaster

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_audit_log/graphql/subscriptions/broadcaster.rb

Constant Summary collapse

EVENT =
"rails_audit_log.entry_created"

Instance Method Summary collapse

Constructor Details

#initialize(schema:) ⇒ Broadcaster

Returns a new instance of Broadcaster.



9
10
11
12
# File 'lib/rails_audit_log/graphql/subscriptions/broadcaster.rb', line 9

def initialize(schema:)
  @schema = schema
  @subscriber = nil
end

Instance Method Details

#broadcast(entry) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/rails_audit_log/graphql/subscriptions/broadcaster.rb', line 25

def broadcast(entry)
  @schema.subscriptions.trigger(
    "audit_log_entry_created",
    {item_type: entry.item_type, item_id: entry.item_id.to_s},
    entry
  )

  return unless entry.actor_id.present?

  @schema.subscriptions.trigger(
    "audit_log_entry_created",
    {actor_id: entry.actor_id.to_s},
    entry
  )
end

#startObject



14
15
16
17
18
# File 'lib/rails_audit_log/graphql/subscriptions/broadcaster.rb', line 14

def start
  @subscriber = ActiveSupport::Notifications.subscribe(EVENT) do |*, payload|
    broadcast(payload[:entry])
  end
end

#stopObject



20
21
22
23
# File 'lib/rails_audit_log/graphql/subscriptions/broadcaster.rb', line 20

def stop
  ActiveSupport::Notifications.unsubscribe(@subscriber) if @subscriber
  @subscriber = nil
end