jam-cloud/web/app/assets/javascripts/react-components/FindSessionScreen.js.jsx.co...

136 lines
3.8 KiB
CoffeeScript
Raw Permalink Normal View History

2020-04-29 20:51:50 +00:00
context = window
MIX_MODES = context.JK.MIX_MODES
2023-10-26 11:55:02 +00:00
AppStore = context.AppStore
2020-04-29 20:51:50 +00:00
2020-05-06 19:42:52 +00:00
SessionsActions = @SessionsActions
2020-04-29 20:51:50 +00:00
@FindSessionScreen = React.createClass({
mixins: [Reflux.listenTo(@AppStore, "onAppInit"), Reflux.listenTo(@UserStore, "onUserChanged")]
LIMIT: 20
instrument_logo_map: context.JK.getInstrumentIconMap24()
getInitialState: () ->
2020-05-06 19:42:52 +00:00
{activeTab: '', search: '', type: 'user-input', screenActive: false}
2020-04-29 20:51:50 +00:00
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)
2020-05-06 19:42:52 +00:00
tabActivate: (tab) ->
@setState({activeTab: tab})
2020-04-29 20:51:50 +00:00
render: () ->
2020-05-06 19:42:52 +00:00
myTabClasses = @generateTabClasses('my')
openTabClasses = @generateTabClasses('open')
upcomingTabClasses = @generateTabClasses('upcoming')
2020-04-29 20:51:50 +00:00
2020-05-06 19:42:52 +00:00
myProperties = @generateProperties('my')
openProperties = @generateProperties('open')
upcomingProperties = @generateProperties('upcoming')
2020-04-29 20:51:50 +00:00
search = ''
2020-05-06 19:42:52 +00:00
`<div className="FindSessionScreen">
2020-04-29 20:51:50 +00:00
<form id="find-session-form">
<div className="session-filter">
<div style={{minWidth:'770px'}}>
<div className="tabs">
2020-05-06 19:42:52 +00:00
<a className={myTabClasses} onClick={this.tabActivate.bind(this, 'my')}>
For Me
2020-04-29 20:51:50 +00:00
</a>
2020-05-06 19:42:52 +00:00
<a className={openTabClasses} onClick={this.tabActivate.bind(this, 'open')}>
Open Jams
2020-04-29 20:51:50 +00:00
</a>
2020-05-06 19:42:52 +00:00
<a className={upcomingTabClasses} onClick={this.tabActivate.bind(this, 'upcoming')}>
2020-04-30 17:05:59 +00:00
Upcoming
2020-04-29 20:51:50 +00:00
</a>
</div>
</div>
</div>
</form>
2020-05-06 19:42:52 +00:00
<FindSessionOpen mode='my' active={myProperties.active} screenActive={this.state.screenActive}/>
<FindSessionOpen mode='open' active={openProperties.active} screenActive={this.state.screenActive} />
<FindSessionOpen mode='upcoming' active={upcomingProperties.active} screenActive={this.state.screenActive} />
</div>`
2020-04-29 20:51:50 +00:00
componentDidMount: () ->
return
2020-05-06 19:42:52 +00:00
componentDidUpdate: (prevProps, prevState) ->
2020-04-29 20:51:50 +00:00
return
beforeShow: () ->
2023-10-26 11:55:02 +00:00
@initCustomUrlScheme()
2020-04-29 20:51:50 +00:00
return
2023-10-26 11:55:02 +00:00
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)
2020-04-29 20:51:50 +00:00
afterShow: () ->
2020-05-06 19:42:52 +00:00
SessionsActions.watching.trigger(true)
if @state.activeTab == ''
@setState({activeTab: 'my'})
@setState({screenActive:true})
beforeHide: () ->
SessionsActions.watching.trigger(false)
SessionsActions.resetSessions.trigger()
@setState({screenActive:false})
2020-04-29 20:51:50 +00:00
onAppInit: (@app) ->
@EVENTS = context.JK.EVENTS
@rest = context.JK.Rest()
@logger = context.JK.logger
screenBindings =
'beforeShow': @beforeShow
'afterShow': @afterShow
2020-05-06 19:42:52 +00:00
'beforeHide': @beforeHide
2020-04-29 20:51:50 +00:00
@app.bindScreen('findSession', screenBindings)
onUserChanged: (userState) ->
@user = userState?.user
})