| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- define [
- "utils/Modal"
- "account/AccountManager"
- "underscore"
- ], (Modal, accountManager, _) ->
- _.templateSettings = interpolate : /\{\{(.+?)\}\}/g
- POLLING_INTERVAL = 15
- ONE_MIN_MILI = 1000*60
- USER_LINKED_TEMPLATE = _.template($('#userLinkedToDropboxTemplate').html())
- class DropboxSettingsManger
- constructor: (@ide)->
- setup = _.once =>
- @tab = $("#dropboxProjectSettings")
- tabLink = $('#manageDropboxSettiingsTabLink').on 'click', (event)=>
- @tab.empty()
- if !@ide.isAllowedToDoIt "owner"
- else if !@project.get('features').dropbox
- ga('send', 'event', 'subscription-funnel', 'askToUpgrade', "dropbox")
- accountManager.askToUpgrade @ide,
- onUpgrade: =>
- @checkIfUserIsLinkedToDropbox()
- ga('send', 'event', 'subscription-funnel', 'upgraded-free-trial', "dropbox")
- else
- @checkIfUserIsLinkedToDropbox()
- @ide.on "afterJoinProject", (project) =>
- @project = project
- setup()
- checkIfUserIsLinkedToDropbox : =>
- @ide.socket.emit "getUserDropboxLinkStatus", @project.get("owner").id, (err, status)=>
- if status.registered
- @buildLinkedView()
- else
- @buildNonLinkedView()
-
- buildLinkedView: ->
- self = @
- run = ->
- @ide.socket.emit "getLastTimePollHappned", (err, lastTimePollHappened)=>
- milisecondsSinceLastPoll = new Date().getTime() - lastTimePollHappened
- roundedMinsSinceLastPoll = Math.round(milisecondsSinceLastPoll / ONE_MIN_MILI)
- minsTillNextPoll = POLLING_INTERVAL - roundedMinsSinceLastPoll
- percentageLeftTillNextPoll = 100 - ((roundedMinsSinceLastPoll / POLLING_INTERVAL) * 100)
- html = $(USER_LINKED_TEMPLATE(minsTillNextPoll:minsTillNextPoll, percentageLeftTillNextPoll:percentageLeftTillNextPoll))
- self.tab.empty()
- self.tab.append html
- setTimeout run, ONE_MIN_MILI
- run()
- buildNonLinkedView: ->
- @tab.append $('#userNotLinkedToDropboxTemplate').html()
|