Aggiunge modulo Replay, Garage dev e YouTube a livello società.
Pipeline registrazione/upload con storage S3, archivio web e app, proxy replay per il browser, OAuth YouTube sulla pagina club (Premium Full) e footer legale. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -37,7 +37,11 @@ module Api
|
||||
}, status: :forbidden
|
||||
end
|
||||
|
||||
recs = team.recordings.ready.includes(stream_session: :match).order(created_at: :desc).limit(50)
|
||||
recs = team.recordings.not_deleted
|
||||
.where(status: %w[ready processing])
|
||||
.includes(stream_session: :match)
|
||||
.order(recorded_at: :desc, created_at: :desc)
|
||||
.limit(50)
|
||||
render json: recs.map { |r| recording_json(r) }
|
||||
end
|
||||
|
||||
@@ -87,7 +91,7 @@ module Api
|
||||
youtube_uses_platform_channel: yt.uses_platform_channel?,
|
||||
youtube_platform_available: resolver.platform_available?,
|
||||
youtube_team_channel_available: resolver.team_channel_available?,
|
||||
youtube_team_channel_title: team.youtube_credential&.channel_title,
|
||||
youtube_team_channel_title: team.club.youtube_credential&.channel_title,
|
||||
plan_slug: ent.plan.slug,
|
||||
plan_name: ent.plan.name,
|
||||
premium_active: ent.premium_active?,
|
||||
@@ -108,7 +112,7 @@ module Api
|
||||
youtube_mode: ent.plan.youtube_mode,
|
||||
staff_role: current_user.staff_role_for(team),
|
||||
can_stream: current_user.can_stream_for?(team),
|
||||
can_connect_youtube: current_user.can_stream_for?(team) && ent.premium_full? && ent.youtube_enabled?
|
||||
can_connect_youtube: team.club.owned_by?(current_user) && ent.premium_full? && ent.youtube_enabled?
|
||||
}
|
||||
if detail
|
||||
data[:members] = team.user_teams.includes(:user).where.not(role: "owner").map do |ut|
|
||||
@@ -121,16 +125,34 @@ module Api
|
||||
def recording_json(recording)
|
||||
session = recording.stream_session
|
||||
match = session.match
|
||||
ent = recording.team.entitlements
|
||||
{
|
||||
id: recording.id,
|
||||
session_id: session.id,
|
||||
match_id: match.id,
|
||||
title: recording.title_or_default,
|
||||
opponent_name: match.opponent_name,
|
||||
team_name: match.team.name,
|
||||
status: recording.status,
|
||||
status_label: recording.status_label,
|
||||
privacy_status: recording.privacy_status,
|
||||
ended_at: session.ended_at,
|
||||
recorded_at: recording.recorded_at_or_fallback,
|
||||
duration_secs: recording.duration_secs,
|
||||
duration_label: recording.duration_label,
|
||||
byte_size: recording.byte_size,
|
||||
byte_size_label: recording.byte_size_label,
|
||||
replay_url: recording.replay_url,
|
||||
download_url: recording.replay_url,
|
||||
expires_at: recording.expires_at
|
||||
playback_url: recording.playback_stream_url,
|
||||
thumbnail_url: recording.thumbnail_url,
|
||||
download_enabled: ent.phone_download_enabled?,
|
||||
view_count: recording.view_count,
|
||||
views_label: recording.views_label,
|
||||
youtube_video_id: recording.youtube_video_id,
|
||||
youtube_watch_url: recording.youtube_watch_url,
|
||||
youtube_publish_enabled: ent.premium_full? && ent.youtube_enabled?,
|
||||
expires_at: recording.expires_at,
|
||||
metadata: recording.metadata
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user