Corregge scadenza token regia oltre le 8h, tabellone HTML sulla pagina live, pulsanti pausa/ripresa in regia, link admin e broadcast ActionCable diretto. App Android: overlay branding, sync score da regia via WebSocket con reconnect e poll. Co-authored-by: Cursor <cursoragent@cursor.com>
44 lines
1.4 KiB
Ruby
44 lines
1.4 KiB
Ruby
module Admin
|
|
class SessionsController < Admin::BaseController
|
|
def index
|
|
@sessions = StreamSession.includes(:match, :user).order(created_at: :desc).limit(50)
|
|
end
|
|
|
|
def show
|
|
@session = StreamSession.find(params[:id])
|
|
@events = @session.stream_events.recent.limit(50)
|
|
end
|
|
|
|
def stop
|
|
@session = StreamSession.find(params[:id])
|
|
if @session.terminal?
|
|
redirect_to admin_session_path(@session), alert: "Sessione già terminata (#{@session.status})."
|
|
return
|
|
end
|
|
|
|
Sessions::Stop.new(@session).call
|
|
redirect_to admin_session_path(@session), notice: "Sessione terminata."
|
|
rescue StandardError => e
|
|
Rails.logger.error("[admin] stop session #{@session.id}: #{e.class} #{e.message}")
|
|
redirect_to admin_session_path(@session), alert: "Errore durante la chiusura: #{e.message}"
|
|
end
|
|
|
|
def regia_link
|
|
@session = StreamSession.find(params[:id])
|
|
if @session.terminal?
|
|
redirect_to admin_session_path(@session), alert: "Sessione terminata: impossibile generare il link regia."
|
|
return
|
|
end
|
|
|
|
access = Sessions::RegiaAccess.new(@session)
|
|
token = access.issue_token!
|
|
redirect_to admin_session_path(@session),
|
|
notice: "Link regia generato.",
|
|
flash: {
|
|
regia_url: access.url(token),
|
|
regia_expires_at: @session.regia_token_expires_at&.iso8601
|
|
}
|
|
end
|
|
end
|
|
end
|