30 lines
805 B
Ruby
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
|