class FrenchToast::Notifier

Attributes

session_key[R]

Public Class Methods

new(session_key) click to toggle source
# File lib/french_toast/notifier.rb, line 3
def initialize(session_key)
  @session_key = session_key
end

Public Instance Methods

notify(partial_name) click to toggle source
# File lib/french_toast/notifier.rb, line 7
def notify(partial_name)
  processed_payload = process(partial_name)
  store(processed_payload)
  notify_by_action_cable(processed_payload)
end

Private Instance Methods

notify_by_action_cable(payload) click to toggle source
# File lib/french_toast/notifier.rb, line 21
def notify_by_action_cable(payload)
  ActionCable.server.broadcast(session_key, payload.html_safe)
end
process(partial_name) click to toggle source
# File lib/french_toast/notifier.rb, line 17
def process(partial_name)
  ApplicationController.render(partial: "french_toast/#{partial_name}")
end
store(payload) click to toggle source
# File lib/french_toast/notifier.rb, line 25
def store(payload)
  LastNotification.find_or_create_by(
    session: session_key,
  ).tap do |notification|
    notification.update(data: payload)
  end
end