$ = jQuery
context = window
MixerActions = context.MixerActions
@SessionOtherTracks = React.createClass({
mixins: [@SessionMyTracksMixin, Reflux.listenTo(@SessionOtherTracksStore,"onOtherInputsChanged"), Reflux.listenTo(@SessionMyTracksStore,"onInputsChanged"), Reflux.listenTo(@AppStore,"onAppInit")]
onOtherInputsChanged: (sessionMixers) ->
session = sessionMixers.session
mixers = sessionMixers.mixers
noAudioUsers = mixers.noAudioUsers
clientsWithAudioOverride = mixers.clientsWithAudioOverride
participants = []
if session.inSession()
self = session.getParticipant(@app.clientId)
myJamBlasterClientId = null
if self? && self.client_role == 'child' && self.parent_client_id?
myJamBlasterClientId = self.parent_client_id
for participant in session.otherParticipants()
if myJamBlasterClientId? && participant.client_id == myJamBlasterClientId
# don't show my parent jamblaster in 'others'
continue
if participant.client_role == 'child' && participant.parent_client_id?
#participant.parent = session.getParticipant(participant.parent_client_id)
# don't show children nodes
continue
if participant.client_id == @app.clientId
participant.user.possessive = "Your"
participant.self = true
else
participant.user.possessive = participant.user.name + "'s"
name = participant.user.name
tracks = []
firstTrack = participant.tracks[0]
hasMixer = false
for track in participant.tracks
# try to find mixer info for this track
mixerFinder = [participant.client_id, track, false] # so that other callers can re-find their mixer data
mixerData = mixers.findMixerForTrack(participant.client_id, track, false, @props.mode)
if mixerData.mixer?
hasMixer = true
tracks.push(track: track, mixers: mixerData, mixerFinder: mixerFinder)
# todo: sessionModel.setAudioEstablished
if firstTrack?
instrumentIcon = context.JK.getInstrumentIcon45(firstTrack.instrument_id)
instrumentDescription = firstTrack.instrument
else
# child scenario
instrumentIcon = context.JK.getInstrumentIcon45('other')
instrumentDescription = 'Child'
photoUrl = context.JK.resolveAvatarUrl(participant.user.photo_url)
name = "#{name}: #{instrumentDescription}"
noAudio = false
if !clientsWithAudioOverride[participant.client_id]
noAudio = noAudioUsers[participant.client_id]
participantState = {
participant: participant,
tracks: tracks,
name: name,
trackName: name
instrumentIcon: instrumentIcon,
photoUrl: photoUrl,
hasMixer: hasMixer,
noAudio: noAudio
}
MixerActions.missingPeerMixer(participant.client_id) unless hasMixer
participants.push(participantState)
this.setState(participants: participants, session: session)
render: () ->
content = null
participants = []
if @state.tracks.length > 0
for track in @state.tracks
track = $.extend({}, track)
track.mode = @props.mode
participants.push(`