DropboxSettingsManager.coffee 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. define [
  2. "utils/Modal"
  3. "account/AccountManager"
  4. "underscore"
  5. ], (Modal, accountManager, _) ->
  6. _.templateSettings = interpolate : /\{\{(.+?)\}\}/g
  7. POLLING_INTERVAL = 15
  8. ONE_MIN_MILI = 1000*60
  9. USER_LINKED_TEMPLATE = _.template($('#userLinkedToDropboxTemplate').html())
  10. class DropboxSettingsManger
  11. constructor: (@ide)->
  12. setup = _.once =>
  13. @tab = $("#dropboxProjectSettings")
  14. tabLink = $('#manageDropboxSettiingsTabLink').on 'click', (event)=>
  15. @tab.empty()
  16. if !@ide.isAllowedToDoIt "owner"
  17. else if !@project.get('features').dropbox
  18. accountManager.askToUpgrade @ide,
  19. onUpgrade: @checkIfUserIsLinkedToDropbox
  20. else
  21. @checkIfUserIsLinkedToDropbox()
  22. @ide.on "afterJoinProject", (project) =>
  23. @project = project
  24. setup()
  25. checkIfUserIsLinkedToDropbox : =>
  26. @ide.socket.emit "getUserDropboxLinkStatus", @project.get("owner").id, (err, status)=>
  27. if status.registered
  28. @buildLinkedView()
  29. else
  30. @buildNonLinkedView()
  31. buildLinkedView: ->
  32. self = @
  33. run = ->
  34. @ide.socket.emit "getLastTimePollHappned", (err, lastTimePollHappened)=>
  35. milisecondsSinceLastPoll = new Date().getTime() - lastTimePollHappened
  36. roundedMinsSinceLastPoll = Math.round(milisecondsSinceLastPoll / ONE_MIN_MILI)
  37. minsTillNextPoll = POLLING_INTERVAL - roundedMinsSinceLastPoll
  38. percentageLeftTillNextPoll = 100 - ((roundedMinsSinceLastPoll / POLLING_INTERVAL) * 100)
  39. html = $(USER_LINKED_TEMPLATE(minsTillNextPoll:minsTillNextPoll, percentageLeftTillNextPoll:percentageLeftTillNextPoll))
  40. self.tab.empty()
  41. self.tab.append html
  42. setTimeout run, ONE_MIN_MILI
  43. run()
  44. buildNonLinkedView: ->
  45. @tab.append $('#userNotLinkedToDropboxTemplate').html()