* VRFS-1280 - allow people to listen to public widgets without being logged in by allowing music session show API public access
This commit is contained in:
parent
7fda82ec0b
commit
44be38f2b0
|
|
@ -191,12 +191,12 @@ ActiveAdmin.register_page "Bootstrap" do
|
|||
mount_template.mp3_metadata_interval = nil
|
||||
mount_template.mime_type ='audio/ogg'
|
||||
mount_template.subtype = 'vorbis'
|
||||
mount_template.fallback_mount = "/fallback-#{mount_template.bitrate}.ogg"
|
||||
#mount_template.fallback_mount = "/fallback-#{mount_template.bitrate}.ogg"
|
||||
else
|
||||
mount_template.mp3_metadata_interval = 4096
|
||||
mount_template.mime_type ='audio/mpeg'
|
||||
mount_template.subtype = nil
|
||||
mount_template.fallback_mount = "/fallback-#{mount_template.bitrate}.mp3"
|
||||
#mount_template.fallback_mount = "/fallback-#{mount_template.bitrate}.mp3"
|
||||
end
|
||||
mount_template.save!
|
||||
end
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
|
||||
return loaded;
|
||||
}
|
||||
|
||||
function play(e) {
|
||||
if(e) {
|
||||
e.preventDefault();
|
||||
|
|
|
|||
|
|
@ -132,6 +132,7 @@
|
|||
$audio.append(originalSource);
|
||||
audioDomElement = $audio.get(0);
|
||||
audioBind();
|
||||
logger.debug("recreated audio element ")
|
||||
}
|
||||
|
||||
function clearBufferTimeout() {
|
||||
|
|
@ -243,6 +244,10 @@
|
|||
if(isNoisyEvent('stalled')) return;
|
||||
logger.debug("stalled", arguments);
|
||||
|
||||
if(arguments[0].target !== audioDomElement) {
|
||||
logger.debug("ignoring stalled msg for non-active audio element")
|
||||
return;
|
||||
}
|
||||
// fires in Chrome on page load
|
||||
|
||||
if(playState == PlayStateBuffering || playState == PlayStatePlaying) {
|
||||
|
|
|
|||
|
|
@ -37,13 +37,7 @@
|
|||
outline: 0;
|
||||
}
|
||||
|
||||
&.no-mount[fan-access="true"]{
|
||||
.play-button {
|
||||
display:none;
|
||||
}
|
||||
}
|
||||
|
||||
&[fan-access="false"]{
|
||||
&.no-mount{
|
||||
.play-button {
|
||||
display:none;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ require 'aws-sdk'
|
|||
class ApiMusicSessionsController < ApiController
|
||||
|
||||
# have to be signed in currently to see this screen
|
||||
before_filter :api_signed_in_user, :except => [ :add_like ]
|
||||
before_filter :api_signed_in_user, :except => [ :add_like, :show ]
|
||||
before_filter :lookup_session, only: [:show, :update, :delete, :claimed_recording_start, :claimed_recording_stop, :track_sync]
|
||||
skip_before_filter :api_signed_in_user, only: [:perf_upload]
|
||||
|
||||
|
|
|
|||
|
|
@ -1,94 +1,100 @@
|
|||
object @music_session
|
||||
|
||||
attributes :id, :description, :musician_access, :approval_required, :fan_access, :fan_chat, :band_id, :user_id, :claimed_recording_initiator_id, :track_changes_counter
|
||||
if !current_user
|
||||
# there should be more data returned, but we need to think very carefully about what data is public for a music session
|
||||
attributes :id
|
||||
else
|
||||
|
||||
node :genres do |item|
|
||||
item.genres.map(&:description)
|
||||
end
|
||||
attributes :id, :description, :musician_access, :approval_required, :fan_access, :fan_chat, :band_id, :user_id, :claimed_recording_initiator_id, :track_changes_counter
|
||||
|
||||
if :is_recording?
|
||||
node do |music_session|
|
||||
{ :recording => partial("api_recordings/show", :object => music_session.recording) }
|
||||
node :genres do |item|
|
||||
item.genres.map(&:description)
|
||||
end
|
||||
|
||||
if :is_recording?
|
||||
node do |music_session|
|
||||
{ :recording => partial("api_recordings/show", :object => music_session.recording) }
|
||||
end
|
||||
end
|
||||
|
||||
node :share_url do |music_session|
|
||||
unless music_session.music_session_history.share_token.nil?
|
||||
share_token_url(music_session.music_session_history.share_token.token)
|
||||
end
|
||||
end
|
||||
|
||||
node :share_url do |music_session|
|
||||
unless music_session.music_session_history.share_token.nil?
|
||||
share_token_url(music_session.music_session_history.share_token.token)
|
||||
end
|
||||
end
|
||||
|
||||
child(:connections => :participants) {
|
||||
collection @music_sessions, :object_root => false
|
||||
attributes :ip_address, :client_id, :joined_session_at
|
||||
|
||||
node :user do |connection|
|
||||
{ :id => connection.user.id, :photo_url => connection.user.photo_url, :name => connection.user.name, :is_friend => connection.user.friends?(current_user), :connection_state => connection.aasm_state }
|
||||
end
|
||||
|
||||
child(:tracks => :tracks) {
|
||||
attributes :id, :connection_id, :instrument_id, :sound, :client_track_id, :updated_at
|
||||
}
|
||||
}
|
||||
child(:connections => :participants) {
|
||||
collection @music_sessions, :object_root => false
|
||||
attributes :ip_address, :client_id, :joined_session_at
|
||||
|
||||
node :user do |connection|
|
||||
{ :id => connection.user.id, :photo_url => connection.user.photo_url, :name => connection.user.name, :is_friend => connection.user.friends?(current_user), :connection_state => connection.aasm_state }
|
||||
end
|
||||
|
||||
child({:invitations => :invitations}) {
|
||||
attributes :id, :sender_id, :receiver_id
|
||||
}
|
||||
|
||||
# only show join_requests if the current_user is in the session
|
||||
node(:join_requests, :if => lambda { |music_session| music_session.users.exists?(current_user) } ) do |music_session|
|
||||
child(:join_requests => :join_requests) {
|
||||
attributes :id, :text
|
||||
child(:user => :user) {
|
||||
attributes :id, :name
|
||||
child(:tracks => :tracks) {
|
||||
attributes :id, :connection_id, :instrument_id, :sound, :client_track_id, :updated_at
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
# only show currently playing recording data if the current_user is in the session
|
||||
node(:claimed_recording, :if => lambda { |music_session| music_session.users.exists?(current_user) } ) do |music_session|
|
||||
|
||||
child(:claimed_recording => :claimed_recording) {
|
||||
attributes :id, :name, :description, :is_public
|
||||
child({:invitations => :invitations}) {
|
||||
attributes :id, :sender_id, :receiver_id
|
||||
}
|
||||
|
||||
child(:recording => :recording) {
|
||||
attributes :id, :created_at, :duration
|
||||
child(:band => :band) {
|
||||
attributes :id, :name
|
||||
}
|
||||
# only show join_requests if the current_user is in the session
|
||||
node(:join_requests, :if => lambda { |music_session| music_session.users.exists?(current_user) } ) do |music_session|
|
||||
child(:join_requests => :join_requests) {
|
||||
attributes :id, :text
|
||||
child(:user => :user) {
|
||||
attributes :id, :name
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
child(:mixes => :mixes) {
|
||||
attributes :id, :is_completed
|
||||
# only show currently playing recording data if the current_user is in the session
|
||||
node(:claimed_recording, :if => lambda { |music_session| music_session.users.exists?(current_user) } ) do |music_session|
|
||||
|
||||
node :mp3_url do |mix|
|
||||
mix[:mp3_url]
|
||||
end
|
||||
child(:claimed_recording => :claimed_recording) {
|
||||
attributes :id, :name, :description, :is_public
|
||||
|
||||
node :ogg_url do |mix|
|
||||
mix[:ogg_url]
|
||||
end
|
||||
}
|
||||
child(:recording => :recording) {
|
||||
attributes :id, :created_at, :duration
|
||||
child(:band => :band) {
|
||||
attributes :id, :name
|
||||
}
|
||||
|
||||
child(:recorded_tracks => :recorded_tracks) {
|
||||
attributes :id, :fully_uploaded, :client_track_id, :client_id, :instrument_id
|
||||
child(:mixes => :mixes) {
|
||||
attributes :id, :is_completed
|
||||
|
||||
node :url do |recorded_track|
|
||||
recorded_track[:url]
|
||||
node :mp3_url do |mix|
|
||||
mix[:mp3_url]
|
||||
end
|
||||
|
||||
child(:user => :user) {
|
||||
attributes :id, :first_name, :last_name, :city, :state, :country, :photo_url
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
end
|
||||
node :ogg_url do |mix|
|
||||
mix[:ogg_url]
|
||||
end
|
||||
}
|
||||
|
||||
# only show mount info if fan_access is public. Eventually we'll also need to show this in other scenarios, like if invited
|
||||
child({:mount => :mount}, :if => lambda { |music_session| music_session.fan_access}) {
|
||||
attributes :id, :name, :sourced, :listeners, :bitrate, :subtype, :url
|
||||
node(:mime_type) { |mount| mount.resolve_string(:mime_type) }
|
||||
node(:bitrate) { |mount| mount.resolve_string(:bitrate) }
|
||||
node(:subtype) { |mount| mount.resolve_string(:subtype) }
|
||||
}
|
||||
child(:recorded_tracks => :recorded_tracks) {
|
||||
attributes :id, :fully_uploaded, :client_track_id, :client_id, :instrument_id
|
||||
|
||||
node :url do |recorded_track|
|
||||
recorded_track[:url]
|
||||
end
|
||||
|
||||
child(:user => :user) {
|
||||
attributes :id, :first_name, :last_name, :city, :state, :country, :photo_url
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
# only show mount info if fan_access is public. Eventually we'll also need to show this in other scenarios, like if invited
|
||||
child({:mount => :mount}, :if => lambda { |music_session| music_session.fan_access}) {
|
||||
attributes :id, :name, :sourced, :listeners, :bitrate, :subtype, :url
|
||||
node(:mime_type) { |mount| mount.resolve_string(:mime_type) }
|
||||
node(:bitrate) { |mount| mount.resolve_string(:bitrate) }
|
||||
node(:subtype) { |mount| mount.resolve_string(:subtype) }
|
||||
}
|
||||
end
|
||||
Loading…
Reference in New Issue