/app/assets/javascripts/backbone/models/StageCollection.js.coffee

https://github.com/jonmumm/Talksho · CoffeeScript · 65 lines · 54 code · 9 blank · 2 comment · 6 complexity · e1a070db242ae1e3754008c92bd17aa9 MD5 · raw file

  1. Talkshow.Collections.StageCollection = Backbone.Collection.extend
  2. initialize: ->
  3. $(document).bind 'startShow', $.proxy @onStartShow, @
  4. $(document).bind 'stopShow', $.proxy @onStopShow, @
  5. $(document).bind 'joinShow', $.proxy @onJoinShow, @
  6. # Handle all new streams
  7. session.addEventListener 'streamCreated', $.proxy @onStreamCreated, @
  8. session.addEventListener 'sessionConnected', $.proxy @onSessionConnected, @
  9. model: Talkshow.Models.StageItem
  10. onStartShow: ->
  11. if archiveShow
  12. session.addEventListener 'archiveCreated', (event) =>
  13. window.archive = event.archives[0]
  14. session.addEventListener 'sessionRecordingStarted', (event) =>
  15. @add new Talkshow.Models.StageItem
  16. $(document).trigger 'startShowComplete'
  17. session.startRecording(archive)
  18. session.createArchive opentok_api_key, 'perSession'
  19. else
  20. @add new Talkshow.Models.StageItem
  21. $(document).trigger 'startShowComplete'
  22. onStopShow: ->
  23. if archiveShow
  24. session.addEventListener 'sessionRecordingStopped', (event) =>
  25. session.addEventListener 'archiveClosed', (event) =>
  26. # Post archive ID to show
  27. $.ajax
  28. type: "post"
  29. url: "/shows/#{showId}"
  30. data:
  31. archiveId: archive.archiveId
  32. $(document).trigger 'stopShowComplete'
  33. session.disconnect()
  34. session.closeArchive archive
  35. session.stopRecording()
  36. else
  37. $(document).trigger 'stopShowComplete'
  38. onJoinEvent: ->
  39. @add new Talkshow.Models.StageItem
  40. onSessionConnected: (event) ->
  41. for stream in event.streams
  42. @updateStreamCollection stream
  43. onStreamCreated:(event) ->
  44. for stream in event.streams
  45. @updateStreamCollection stream
  46. updateStreamCollection: (stream) ->
  47. if stream.connection.connectionId isnt session.connection.connectionId
  48. stateItem = app.get('stateItems').get(stream.streamId)
  49. if stateItem?
  50. state = stateItem.get 'state'
  51. else
  52. state = "queue"
  53. @add new Talkshow.Models.StageItem
  54. id: stream.streamId
  55. stream: stream
  56. state: state