turniere-backend/app/channels/tournament_matches_channel.rb

30 lines
805 B
Ruby

# frozen_string_literal: true
class TournamentMatchesChannel < ApplicationCable::Channel
def subscribed
@tournament_id = params[:tournament_id]
@filters = match_filters
tournament = Tournament.find(@tournament_id)
stream_for TournamentMatchesBroadcast.stream_target(tournament) do
transmit_current_payload
end
transmit TournamentMatchesBroadcastPayload.build(tournament, @filters)
end
private
attr_reader :tournament_id, :filters
def match_filters
params.slice(:state, :stage_id, :stage_level, :position, :group_stage_position)
end
def transmit_current_payload
tournament = TournamentMatchesBroadcast.load_tournament(tournament_id)
return if tournament.nil?
transmit TournamentMatchesBroadcastPayload.build(tournament, filters)
end
end