Class: RailsAuditLog::Graphql::Subscriptions::Broadcaster
- Inherits:
-
Object
- Object
- RailsAuditLog::Graphql::Subscriptions::Broadcaster
- Defined in:
- lib/rails_audit_log/graphql/subscriptions/broadcaster.rb
Constant Summary collapse
- EVENT =
"rails_audit_log.entry_created"
Instance Method Summary collapse
- #broadcast(entry) ⇒ Object
-
#initialize(schema:) ⇒ Broadcaster
constructor
A new instance of Broadcaster.
- #start ⇒ Object
- #stop ⇒ Object
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 |
#start ⇒ Object
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 |
#stop ⇒ Object
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 |