context = window MixerActions = context.MixerActions @SessionOtherTracks = React.createClass({ mixins: [Reflux.listenTo(@SessionOtherTracksStore,"onInputsChanged"), Reflux.listenTo(@AppStore,"onAppInit")] onInputsChanged: (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 = [] noOthers = `