context = window
SessionsActions = @SessionsActions
@FindSessionFriends = React.createClass({
mixins: [Reflux.listenTo(@AppStore, "onAppInit")
Reflux.listenTo(@SessionsStore, "onSessionsChanged")]
TYPE_SESSION: 'my'
searched_ever: false
registeredInfiniteScroll: false
getInitialState: () ->
{active: false, sessions: [], searching: false, count: 0, currentPage: 0, end:false}
sessionResults: () ->
results = []
for session in @state.sessions
results.push(``)
results
help: () ->
`
How This Page Works
This page will show sessions tailored for you:
- sessions created by a friend (invite others to JamKazam!)
- sessions for which you have an invitation
- sessions for which you have a RSVP
Sit Back and Relax
This page will automatically update when a friend creates a session, or you are invited to one.
So if your friend is creating a session soon, just sit tight and watch for sessions to show up!
`
refresh: () ->
if @state.searching
return
SessionsActions.clearSessions.trigger(@TYPE_SESSION, @query())
render: () ->
results = @sessionResults()
className = "content-body-scroller sessions-for-me"
if(@props.active)
className = className + " active"
firstTime = null
if results.length == 0
if @state.searching
results = `| ... Searching ... |
`
else
# help = @help()
results = `| None Found |
`
help = @help()
refreshButtonClasses = "button-grey btn-refresh"
if @state.searching
refreshButtonClasses = refreshButtonClasses += " disabled"
`
| SESSION |
MUSICIANS |
ACTIONS |
{results}
{help}
`
query: () ->
$root = $(this.getDOMNode())
keyword = $root.find('input.session-keyword-srch').val()
if keyword == ''
keyword = undefined
query =
keyword: keyword
query
componentDidMount: () ->
@EVENTS = context.JK.EVENTS
@rest = context.JK.Rest()
@logger = context.JK.logger
componentDidUpdate: (prevProps, prevState) ->
if @props.active && !prevProps.active && !@searched_ever
SessionsActions.updateSessions.trigger('my')
@searched_ever = true
$root = $(this.getDOMNode())
$scroller = $root
if !@registeredInfiniteScroll
@registerInfiniteScroll($scroller)
registerInfiniteScroll: ($scroller) ->
@registeredInfiniteScroll = true
$scroller.off('scroll')
$scroller.on('scroll', () =>
# be sure to not fire off many refreshes when user hits the bottom
return if @state.searching
if @state.end
return
if $scroller.scrollTop() + $scroller.innerHeight() + 100 >= $scroller[0].scrollHeight
SessionsActions.updateSessions.trigger(@TYPE_SESSION, @query())
)
inviteFriends:() ->
JK.InvitationDialogInstance.showEmailDialog();
onAppInit: (@app) ->
return
onSessionsChanged: (sessionsChanged) ->
if sessionsChanged.type == @TYPE_SESSION
@setState(sessionsChanged)
})