turniere-backend/app/channels/tournament_beamers_channel.rb

21 lines
678 B
Ruby

# frozen_string_literal: true
class TournamentBeamersChannel < ApplicationCable::Channel
class << self
def stream_name(tournament_id:, beamer_name:)
"tournament_#{tournament_id}:beamers:#{beamer_name}"
end
end
def subscribed
tournament = Tournament.find(params[:tournament_id])
beamer_name = params[:beamer_name].presence
beamer = tournament.beamers.find_by(name: beamer_name) || tournament.beamers.find_by(name: Beamer::DEFAULT_NAME)
return reject unless beamer
stream_from self.class.stream_name(tournament_id: tournament.id, beamer_name: beamer.name)
transmit BeamerBroadcastPayload.build(beamer:, event: 'snapshot')
end
end