Files
MatchLiveTv/backend/app/services/scoring/sync_state.rb
Emiliano Frascaro ab9cb02083 Aggiunge overlay server-side burn-in e stabilizza diretta live.
Tabellone, badge e brand sono ricodificati nel flusso _air via OverlayRelay;
sync punteggio HTTP, volume condiviso rails/sidekiq, qualità 720p migliorata
e badge CONNECTING in ripresa da pausa.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-03 23:55:17 +02:00

29 lines
879 B
Ruby

module Scoring
# Sincronizza lo stato completo del tabellone (app mobile / Action Cable).
class SyncState
SCORE_KEYS = %w[home_sets away_sets home_points away_points current_set].freeze
def initialize(session:, payload:)
@session = session
@payload = payload.stringify_keys
end
def call
score = @session.score_state || @session.create_score_state!(
home_sets: 0, away_sets: 0, home_points: 0, away_points: 0, current_set: 1, set_partials: []
)
attrs = {}
SCORE_KEYS.each do |key|
attrs[key] = @payload[key] if @payload.key?(key)
end
attrs[:set_partials] = @payload["set_partials"] if @payload.key?("set_partials")
score.update!(attrs)
SessionChannel.broadcast_message(@session, score.as_cable_payload)
Streams::Overlay::Refresh.call(@session)
score
end
end
end