context = window
MIX_MODES = context.JK.MIX_MODES
AppStore = context.AppStore
SessionsActions = @SessionsActions
@FindSessionScreen = React.createClass({
mixins: [Reflux.listenTo(@AppStore, "onAppInit"), Reflux.listenTo(@UserStore, "onUserChanged")]
LIMIT: 20
instrument_logo_map: context.JK.getInstrumentIconMap24()
getInitialState: () ->
{activeTab: '', search: '', type: 'user-input', screenActive: false}
generateProperties: (tab) ->
properties = {}
properties['active'] = @state.activeTab == tab
properties
generateTabClasses: (tab) ->
classes = {}
classes['find-tab'] = true
classes[tab] = true
if @state.activeTab == tab
classes['active'] = true
classNames(classes)
tabActivate: (tab) ->
@setState({activeTab: tab})
render: () ->
myTabClasses = @generateTabClasses('my')
openTabClasses = @generateTabClasses('open')
upcomingTabClasses = @generateTabClasses('upcoming')
myProperties = @generateProperties('my')
openProperties = @generateProperties('open')
upcomingProperties = @generateProperties('upcoming')
search = ''
`
`
componentDidMount: () ->
return
componentDidUpdate: (prevProps, prevState) ->
return
beforeShow: () ->
@initCustomUrlScheme()
return
ensuredCallback: (sessionId) ->
context.JK.SessionUtils.joinSession(sessionId)
joinSession: (sessionId) ->
context.JK.SessionUtils.ensureValidClient(AppStore.app, context.JK.GearUtils, @ensuredCallback.bind(this, sessionId))
initCustomUrlScheme: () ->
hash = decodeURIComponent(context.location.hash)
qStr = hash.substring(hash.lastIndexOf('/') + 1)
qParamsArr = qStr.split('|')
isCustom = undefined
sessionId = undefined
qParamsArr.forEach (q) ->
qp = q.split('~')
if qp[0] == 'custom'
isCustom = qp[1]
if qp[0] == 'joinSessionId'
sessionId = qp[1]
if !isCustom || isCustom != 'yes'
return
unless sessionId
return
@joinSession(sessionId)
afterShow: () ->
SessionsActions.watching.trigger(true)
if @state.activeTab == ''
@setState({activeTab: 'my'})
@setState({screenActive:true})
beforeHide: () ->
SessionsActions.watching.trigger(false)
SessionsActions.resetSessions.trigger()
@setState({screenActive:false})
onAppInit: (@app) ->
@EVENTS = context.JK.EVENTS
@rest = context.JK.Rest()
@logger = context.JK.logger
screenBindings =
'beforeShow': @beforeShow
'afterShow': @afterShow
'beforeHide': @beforeHide
@app.bindScreen('findSession', screenBindings)
onUserChanged: (userState) ->
@user = userState?.user
})